赞
踩
作者 | 将狼才鲸 |
---|---|
日期 | 2024-02-29 |
前景提要:
确定你要编译哪一块开发板:
安装基础开发环境:安装VMware虚拟机+Ubuntu发行版系统+Git软件+repo软件+Python
编译开源鸿蒙源码前先下载源码
编译:
编译的相关介绍
编译步骤(先安装编译工具):
python3 -V 查看python版本,如果是3.8以下,则:
python3 -m pip install --user ohos-build
如果你是Ubuntu18.04,则先执行
先安装依赖库
sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev 安装编译时依赖的软件和库
按前面的流程下载全量源码,或者特定开发板特定芯片的源码
进入到你下载的源码根目录
bash build/prebuilts_download.sh 安装和芯片相关的编译器和二进制工具,全自动的,会下载的同时进行安装,要等待一段时间,有进度条
python3 -m pip install --user build/hb
gedit ~/.bashrc
将 export PATH=~/.local/bin:$PATH 加入到最后一行并保存退出
source ~/.bashrc
hb --help 这个命令执行时可能有报错,有什么错误就解决什么错误,例如用下面方法解决报错
hb set 进行编译设置
jim@ubuntu:~/openHarmony$ hb set
[OHOS INFO] Input code path: .
OHOS Which product do you need? qemu_mini_system_demo
hb build -f 开始编译,有报错则处理报错
出现build success表示编程成功,然后进行烧录,或者直接用QEMU模拟器进行运行。
防止格式被破坏
* python3 -V 查看python版本,如果是3.8以下,则: * sudo apt install python3.8 * sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 * sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2 * sudo update-alternatives --config python3 * python3 -V * python3 -m pip install --user ohos-build * pip3是Python的包管理工具,用于安装、升和管理Python包 * 需要python3.8以上的版本 * 安装流程介绍: * [hb安装异常处理](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-common-hberr.md/) * [快速入门-如何编译程序](https://gitee.com/openharmony/docs/tree/master/zh-cn/device-dev/quick-start) * [安装库和工具集-编译流程](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-install-package.md) * 如果你是Ubuntu18.04,则先执行 * cd /usr/lib/python3/dist-packages * cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so apt_pkg.cpython-39m-x86_64-linux-gnu.so apt_pkg.so * cd - * 先安装依赖库 * sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev 安装编译时依赖的软件和库 * 仔细看安装后的信息,如果提示有哪些包未安装成功,则你需要单独安装 * sudo apt-get install g++-multilib * sudo apt-get install gcc-arm-linux-gnueabi * sudo apt-get install gcc-multilib * sudo apt-get install lib32ncurses5-dev * sudo apt-get install lib32z1-dev * sudo apt-get install libc6-dev-i386 * 按前面的流程下载全量源码,或者特定开发板特定芯片的源码 * 进入到你下载的源码根目录 * bash build/prebuilts_download.sh 安装和芯片相关的编译器和二进制工具,全自动的,会下载的同时进行安装,要等待一段时间,有进度条 * python3 -m pip install --user build/hb * gedit ~/.bashrc * 将 export PATH=~/.local/bin:$PATH 加入到最后一行并保存退出 * source ~/.bashrc * hb --help 这个命令执行时可能有报错,有什么错误就解决什么错误,例如用下面方法解决报错 * python3 -m pip uninstall ohos-build * python3 -m pip install --user ohos-build==0.4.3 * hb set 进行编译设置 * 第一步目录输入. 选择源码根目录的当前目录 * 第二步选择开发板,我使用上下方向键选择qemu_mini_system_demo这款qemu的模拟器开发板,ARM Cortex-M4内核的虚拟芯片 * [编译形态整体说明,含QEMU,可以编译哪些开发板和芯片](https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-appendix-compiledform.md/) * [Qemu Arm Cortex-m4 mps2-an386 教程](https://gitee.com/openharmony/device_qemu/blob/master/arm_mps2_an386/README_zh.md) * qemu_mini_system_demo arm_mps2_an386 qemu liteos_m mini arm-cortex-m4 * hb build -f 开始编译,有报错则处理报错 * 出现build success表示编程成功,然后进行烧录,或者直接用QEMU模拟器进行运行。
如果你用hb的方式编译始终出错,那么可以试试使用传统.sh脚本的方式
./build.sh --product-name qemu_mini_system_demo --ccache // 需要换成你自己开发板的名称
检查编译结果。编译完成后,log中显示如下:
如果依然编译有报错,那还可以试试Docker
jim@ubuntu:~/openHarmony$ sudo docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2
root@949f932a2f80:/home/openharmony# ls
applications build build.sh developtools docs foundation ohos_config.json prebuilts qemu-run third_party
base build.py commonlibrary device drivers kernel out productdefine test vendor
root@949f932a2f80:/home/openharmony#
python3 build.py -p qemu_mini_system_demo@ohemu
在编译结束后,编译所生成的文件都会被存放在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/目录下。
如果遇到报错,则解决报错
编译成功后是这样的打印:
[OHOS INFO] [1614/1615] STAMP obj/build/ohos/images/make_images.stamp [OHOS INFO] [1615/1615] STAMP obj/build/core/gn/images.stamp [OHOS INFO] ccache_dir = /root/.ccache, ccache_exec = /usr/bin/ccache [OHOS INFO] -------------------------------------------- [OHOS INFO] ccache summary: [OHOS INFO] ccache version: 3.7.7 [OHOS INFO] cache hit (direct): 0 [OHOS INFO] cache hit (preprocessed): 0 [OHOS INFO] cache miss: 0 [OHOS INFO] hit rate: 0.00% [OHOS INFO] miss rate: 0.00% [OHOS INFO] Cache size (GB): [OHOS INFO] --------------------------------------------- [OHOS INFO] c targets overlap rate statistics [OHOS INFO] subsystem files NO. percentage builds NO. percentage overlap rate [OHOS INFO] hiviewdfx 12 0.8% 12 0.8% 1.00 [OHOS INFO] kernel 902 63.5% 902 63.5% 1.00 [OHOS INFO] security 61 4.3% 61 4.3% 1.00 [OHOS INFO] startup 26 1.8% 26 1.8% 1.00 [OHOS INFO] systemabilitymgr 15 1.1% 15 1.1% 1.00 [OHOS INFO] thirdparty 393 27.7% 393 27.7% 1.00 [OHOS INFO] [OHOS INFO] c overall build overlap rate: 1.00 [OHOS INFO] [OHOS INFO] [OHOS INFO] qemu_mini_system_demo@ohemu build success [OHOS INFO] Cost time: 0:05:47 root@ff38bf1e3e75:/home/openharmony# jim@ubuntu:~/openHarmony/out/arm_mps2_an386/qemu_mini_system_demo$ ls all_parts_host.json build_configs config.h kconfig_files.txt OHOS_Image.bin src_installed_parts.json all_parts_info.json build.log error.log libs OHOS_Image.map src_sa_infos_tmp.json args.gn build.ninja etc NOTICE_FILES OHOS_Image.sym.sorted startup binary_installed_parts.json build.ninja.d gen obj packages thirdparty build.1709259296.3884952.log build.trace.gz hiviewdfx OHOS_Image security toolchain.ninja build.1709259767.6772568.log config.gni kconfig_env.txt OHOS_Image.asm sorted_action_duration.txt jim@ubuntu:~/openHarmony/out/arm_mps2_an386/qemu_mini_system_demo$
生成的系统镜像image是这里面的OHOS_Image文件
如需退出Docker,执行exit命令即可。这个命令会停止当前的Docker容器,并返回到您的操作系统。
下一步就可以把编译好的操作系统在QEMU模拟器中运行起来啦。
如果以上步骤依然还有错,那么建议你使用不同的Ubuntu系统,并且下载OpenHarmony4.0全量代码,然后编译时换一个芯片类型,换一个系统类型再尝试;开发期间的代码不可能在每一种环境下都没有错,或者找个做过鸿蒙系统开发的,让他把他的虚拟机直接打包发给你,这样最省事。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。