云将东游,过扶摇之枝,而适遭鸿蒙。—《庄子·在宥》

本文详细介绍了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.代码编译

进入源代码目录执行下面命令下载编译工具链,编译 标准/小型/轻量 都需要执行。

bash build/prebuilts_download.sh --skip-ssl

3.1标准系统编译

3.1.1安装命令:
apt-get update -y 
apt-get install -y  
# 如果是ubuntu20.04系统请直接安装python3.9,如果是ubuntu18.04请改为安装python3.8
apt-get install -y apt-utils binutils bison flex bc build-essential make mtd-utils gcc-arm-linux-gnueabi u-boot-tools python3.9 python3-pip git zip unzip curl wget gcc g++ ruby dosfstools mtools default-jre default-jdk scons python3-distutils perl openssl libssl-dev cpio git-lfs m4 ccache zlib1g-dev tar rsync liblz4-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-dev 
apt-get install -y grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools  pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5 libncurses5-dev libncursesw5 libstdc++6  gcc-arm-none-eabi vim ssh locales doxygen
apt-get install -y libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

# python需要安装以下模块
pip3 install --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple requests setuptools pymongo kconfiglib pycryptodome ecdsa ohos-build pyyaml prompt_toolkit==1.0.14 redis json2html yagmail python-jenkins 
pip3 install esdk-obs-python --trusted-host pypi.org 
pip3 install six --upgrade --ignore-installed six

# 安装nodejs npm
apt-get install -y nodejs npm
# 如果提示node版本不够,可以按照下面安装指定版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm list-remote
nvm install v20.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 --ccache

3.2小型/轻量系统编译

3.2.1安装命令:
apt-get update -y 
apt-get install -y  
# 如果是ubuntu20.04系统请直接安装python3.9,如果是ubuntu18.04请改为安装python3.8
apt-get install -y apt-utils binutils bison flex bc build-essential make mtd-utils gcc-arm-linux-gnueabi u-boot-tools python3.9 python3-pip git zip unzip curl wget gcc g++ ruby dosfstools mtools default-jre default-jdk scons python3-distutils perl openssl libssl-dev cpio git-lfs m4 ccache zlib1g-dev tar rsync liblz4-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-dev 
apt-get install -y grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools  pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5 libncurses5-dev libncursesw5 libstdc++6  gcc-arm-none-eabi vim ssh locales doxygen
apt-get install -y libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

# python需要安装以下模块
pip3 install --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple requests setuptools pymongo kconfiglib pycryptodome ecdsa ohos-build pyyaml prompt_toolkit==1.0.14 redis json2html yagmail python-jenkins 
pip3 install esdk-obs-python --trusted-host pypi.org 
pip3 install six --upgrade --ignore-installed six

# 安装nodejs npm
apt-get install -y nodejs npm
# 如果提示node版本不够,可以按照下面安装指定版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm list-remote
nvm install v20.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 -m pip install --user ohos-build==0.4.6
  • OH4.x/5.x 安装:
python3 -m pip install --user build/hb

备注:需要在源码根目录执行python3 -m pip install --user build/hb

3.2.3执行编译命令

hb set选择编译目标,通过上下箭头进行选择。

hb set

在这里插入图片描述
选择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 -p ipcamera@hisilicon,免 set 编译产品,该命令可以跳过 set 步骤,直接编译产品。

附录二:编译成功log如下:

[OHOS INFO] ---------------------------------------------
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] unrecognized ninja log format, we need # ninja log v5
[OHOS INFO]
[OHOS INFO] end hpm command
[OHOS INFO] start run hpm command
[OHOS INFO] c targets overlap rate statistics
[OHOS INFO] subsystem           files NO.       percentage      builds NO.      percentage      overlap rate
[OHOS INFO] commonlibrary              1        0.1%           1        0.1%    1.00
[OHOS INFO] communication            287        38.4%        287        38.4%   1.00
[OHOS INFO] developtools               6        0.8%           6        0.8%    1.00
[OHOS INFO] hiviewdfx                 17        2.3%          17        2.3%    1.00
[OHOS INFO] security                 195        26.1%        195        26.1%   1.00
[OHOS INFO] startup                   26        3.5%          26        3.5%    1.00
[OHOS INFO] systemabilitymgr          15        2.0%          15        2.0%    1.00
[OHOS INFO] test                      30        4.0%          30        4.0%    1.00
[OHOS INFO] thirdparty               145        19.4%        145        19.4%   1.00
[OHOS INFO] updater                    4        0.5%           4        0.5%    1.00
[OHOS INFO] xts                       30        4.0%          30        4.0%    1.00
[OHOS INFO]
[OHOS INFO] c overall build overlap rate: 1.00
[OHOS INFO]
[OHOS INFO]
[OHOS INFO] end hpm command
[OHOS INFO] wifiiot_hispark_pegasus build success
[OHOS INFO] Cost Time:  0:00:37
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐