OpenHarmony 标准/小型/轻量 系统编译
云将东游,过扶摇之枝,而适遭鸿蒙。—《庄子·在宥》
本文详细介绍了OpenHarmony 标准(standard/L2)、小型(small/L1)、轻量(mini/L0) 系统代码下载及编译方法。
1.编译环境要求
- 编译环境需要Ubuntu18.04及以上版本。笔者环境为WSL2 + Ubuntu20.04。
2.代码下载
2.1最新代码下载(最新代码已切到gitcode,建议按照2.2章节下载)
官方路径:https://gitee.com/openharmony,进入以后在公告栏有最新版本路径,例如:“社区已于2025-01-22发布OpenHarmony-v5.0.2-Release版本, 详情请参考https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v5.0.2-release.md”。
进入最新版本路径“https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v5.0.2-release.md”按照指示下载代码。
建议选择 通过repo获取->方式一(推荐)->从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。如下图:
2.2历史归档代码下载
- 路径:https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/Readme.md
选择对应版本点击进入详细信息,并下载代码 - 建议选择 通过repo获取->方式一(推荐)->从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。如下图:
3.代码编译
进入源代码目录执行下面命令下载编译工具链,编译 标准/小型/轻量 都需要执行。
bashbuild/prebuilts_download.sh --skip-ssl3.1标准系统编译
3.1.1安装命令:
apt-getupdate-yapt-getinstall-y# 如果是ubuntu20.04系统请直接安装python3.9,如果是ubuntu18.04请改为安装python3.8apt-getinstall-yapt-utils binutils bison flexbcbuild-essentialmakemtd-utils gcc-arm-linux-gnueabi u-boot-tools python3.9 python3-pipgitzipunzipcurlwgetgcc g++ ruby dosfstoolsmtoolsdefault-jre default-jdk scons python3-distutils perl openssl libssl-dev cpio git-lfs m4 ccache zlib1g-devtarrsyncliblz4-tool genext2fs binutils-dev device-tree-compiler e2fsprogs git-core gnupg gnutls-bin gperf lib32ncurses5-dev libffi-dev zlib* libelf-dev libx11-dev libgl1-mesa-dev lib32z1-dev xsltproc x11proto-core-dev libc6-dev-i386 libxml2-dev lib32z-dev libdwarf-devapt-getinstall-ygrsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautilsquotappp libtinfo-dev libtinfo5 libncurses5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabivimsshlocales doxygenapt-getinstall-ylibxinerama-dev libxcursor-dev libxrandr-dev libxi-dev# python需要安装以下模块pip3install--trusted-host https://repo.huaweicloud.com-ihttps://repo.huaweicloud.com/repository/pypi/simple requests setuptools pymongo kconfiglib pycryptodome ecdsa ohos-build pyyamlprompt_toolkit==1.0.14 redis json2html yagmail python-jenkins pip3installesdk-obs-python --trusted-host pypi.org pip3installsix--upgrade--ignore-installed six# 安装nodejs npmapt-getinstall-ynodejsnpm# 如果提示node版本不够,可以按照下面安装指定版本curl-o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh|bashsource~/.bashrc nvm list-remote nvminstallv20.16.0详见:https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/subsystems/subsys-build-all.md
3.1.2执行编译命令
./build.sh --product-name {product_name} --ccache
./build.sh --product-name rk3568--ccache3.2小型/轻量系统编译
3.2.1安装命令:
apt-getupdate-yapt-getinstall-y# 如果是ubuntu20.04系统请直接安装python3.9,如果是ubuntu18.04请改为安装python3.8apt-getinstall-yapt-utils binutils bison flexbcbuild-essentialmakemtd-utils gcc-arm-linux-gnueabi u-boot-tools python3.9 python3-pipgitzipunzipcurlwgetgcc g++ ruby dosfstoolsmtoolsdefault-jre default-jdk scons python3-distutils perl openssl libssl-dev cpio git-lfs m4 ccache zlib1g-devtarrsyncliblz4-tool genext2fs binutils-dev device-tree-compiler e2fsprogs git-core gnupg gnutls-bin gperf lib32ncurses5-dev libffi-dev zlib* libelf-dev libx11-dev libgl1-mesa-dev lib32z1-dev xsltproc x11proto-core-dev libc6-dev-i386 libxml2-dev lib32z-dev libdwarf-devapt-getinstall-ygrsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautilsquotappp libtinfo-dev libtinfo5 libncurses5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabivimsshlocales doxygenapt-getinstall-ylibxinerama-dev libxcursor-dev libxrandr-dev libxi-dev# python需要安装以下模块pip3install--trusted-host https://repo.huaweicloud.com-ihttps://repo.huaweicloud.com/repository/pypi/simple requests setuptools pymongo kconfiglib pycryptodome ecdsa ohos-build pyyamlprompt_toolkit==1.0.14 redis json2html yagmail python-jenkins pip3installesdk-obs-python --trusted-host pypi.org pip3installsix--upgrade--ignore-installed six# 安装nodejs npmapt-getinstall-ynodejsnpm# 如果提示node版本不够,可以按照下面安装指定版本curl-o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh|bashsource~/.bashrc nvm list-remote nvminstallv20.16.0详见:https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/subsystems/subsys-build-all.md
3.2.2安装hb工具:
- OH3.2 安装:
python3-mpipinstall--userohos-build==0.4.6- OH4.x/5.x 安装:
python3-mpipinstall--userbuild/hb备注:需要在源码根目录执行python3 -m pip install --user build/hb
3.2.3执行编译命令
hb set选择编译目标,通过上下箭头进行选择。
hbset
选择mini系统中->wifiiot_hispark_pegasus目标,如下图:
回车选中对应编译目标,如下图:
hb build 编译产品、开发板或者部件
hb build本例中 mini系统中wifiiot_hispark_pegasus为Hi3861芯片,Hi3861为risc-v内核,需要安装risc-v编译环境,通常上述编译会报错误“[OHOS ERROR] ccache: error: Could not find compiler “riscv32-unknown-elf-gcc” in PATH”。解决办法详见:https://docs.openharmony.cn/pages/v4.1/zh-cn/device-dev/quick-start/quickstart-pkg-3861-tool.md
3.2.4采用build.sh编译轻量和小型系统
轻量和小型系统也可以使用build.sh进行编译,最终也是调用hb进行编译,但采用build.sh没有下拉选择项,需要输入正确的product name。
- 轻量系统wifiiot_hispark_pegasus编译命令
./build.sh --product-name wifiiot_hispark_pegasus--ccache--no-prebuilt-sdk- 小型系统ipcamera_hispark_taurus_linux编译命令
./build.sh --product-name ipcamera_hispark_taurus_linux--ccache--no-prebuilt-sdk附录一:hb工具使用说明:
hb set:设置要编译的产品 hb env:查看当前设置信息 hb clean:清除 out 目录对应产品的编译产物,仅保留 args.gn、build.log hb build:编译产品、开发板或者部件 hb build 后无参数,会按照设置好的代码路径、产品进行编译,编译选项使用与之前保持一致。-f 选项将删除当前产品所有编译产品,等同于 hb clean + hb build。 hb build{component_name},基于设置好的产品对应的单板、内核,单独编译组件,例如:hb build kv_store。 hb build-pipcamera@hisilicon,免set编译产品,该命令可以跳过set步骤,直接编译产品。附录二:编译成功log如下:
[OHOS INFO]---------------------------------------------[OHOS INFO]end hpmcommand[OHOS INFO]start run hpmcommand[OHOS INFO]end hpmcommand[OHOS INFO]start run hpmcommand[OHOS INFO]unrecognized ninja log format, we need# ninja log v5[OHOS INFO][OHOS INFO]end hpmcommand[OHOS INFO]start run hpmcommand[OHOS INFO]c targets overlap rate statistics[OHOS INFO]subsystem files NO. percentage builds NO. percentage overlap rate[OHOS INFO]commonlibrary10.1%10.1%1.00[OHOS INFO]communication28738.4%28738.4%1.00[OHOS INFO]developtools60.8%60.8%1.00[OHOS INFO]hiviewdfx172.3%172.3%1.00[OHOS INFO]security19526.1%19526.1%1.00[OHOS INFO]startup263.5%263.5%1.00[OHOS INFO]systemabilitymgr152.0%152.0%1.00[OHOS INFO]test304.0%304.0%1.00[OHOS INFO]thirdparty14519.4%14519.4%1.00[OHOS INFO]updater40.5%40.5%1.00[OHOS INFO]xts304.0%304.0%1.00[OHOS INFO][OHOS INFO]c overall build overlap rate:1.00[OHOS INFO][OHOS INFO][OHOS INFO]end hpmcommand[OHOS INFO]wifiiot_hispark_pegasus build success[OHOS INFO]Cost Time:0:00:37