马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
文章目录
目标
编译个可以运行的Harmony系统。
操作步骤
需要四个步骤:
- 下载OpenHarmony源码
- 安装必要的程序包
- 添加配置文件
- 执行编译脚本
基本要求
编译环境需要Ubuntu18.04及以上版本。
下载OpenHarmony源码
按照OpenHarmony项目获取OpenHarmony源码指示的方法下载代码。
本人选用从站点下载全量代码的方式下载,OpenHarmony3.0全量代码(标准、轻量和小型系统)站点
安装必要的程序包
安装命令:
- sudo apt-get install build-essential gcc g++ make libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler
复制代码 解压源码
- tar zxvf code-v3.0-LTS.tar.gz
复制代码 code-v3.0-LTS/OpenHarmony下文件如下
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 3月 7 08:28 .
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 3月 8 16:08 ..
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:22 applications
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:22 ark
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 9月 30 09:22 base
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 3月 7 12:47 build
- lrwxrwxrwx 1 hndz-dhliu hndz-dhliu 19 9月 30 09:22 build.py -> build/lite/build.py
- lrwxrwxrwx 1 hndz-dhliu hndz-dhliu 28 9月 30 09:22 build.sh -> build/build_scripts/build.sh
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 9月 30 09:22 developtools
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:22 device
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 9月 30 09:22 docs
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:22 domains
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:22 drivers
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 9月 30 09:22 foundation
- lrwxrwxrwx 1 hndz-dhliu hndz-dhliu 24 9月 30 09:22 .gn -> build/core/gn/dotfile.gn
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:22 interface
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:23 kernel
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 3月 9 09:27 out
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 9月 30 09:45 prebuilts
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:23 productdefine
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 9月 30 14:51 .repo
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:23 test
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 16384 9月 30 09:23 third_party
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 4096 9月 30 09:23 utils
- drwxrwxrwx 1 hndz-dhliu hndz-dhliu 0 9月 30 09:23 vendor
复制代码 将此目录作为源代码根目录,之后所有的目前均以源代码根目录的相对路径形式展示。
安装hb
源码中自带相关编译开发工具,如python, GN, ninja。而hb实际上是python脚本。
- ##源代码根目录下
- cd prebuilts/python/linux-x86/3.8.5/bin ##python3路径
- pwd ##获取python3.8的绝对路径
- echo "export PATH=`pwd`:\$PATH" >> ~/.bashrc ##将python路径加入PATH中
- source ~/.bashrc ##应用最新的PATH
- python3 --version ##确认pyton3 版本为3.8.5
- python3 -m pip install --user ohos-build ##安装最新的hb,及其环境;安装路径为~/.local/bin
- echo "export PATH=~/.local/bin:\$PATH" >> ~/.bashrc ##将python路径加入PATH中
- source ~/.bashrc ##应用最新的PATH
- cd ../../../../.. ##进入源代码根目录
- build/lite/hb/__main__.py -h ##检验hb是否可以使用;安装正确,将打印出hb的使用方法与版本号;由于可能最新的hb与当前源代码不匹配,所以使用源代码配套的hb脚本
复制代码 正确安装,将打印出如下信息
- usage: __main__.py [-h] [-v] {build,set,env,clean,deps} ...
- OHOS Build System version 0.4.3
- positional arguments:
- {build,set,env,clean,deps}
- build Build source code
- set OHOS build settings
- env Show OHOS build env
- clean Clean output
- deps OHOS components deps
- optional arguments:
- -h, --help show this help message and exit
- -v, --version show program's version number and exit
复制代码 执行编译脚本
在源码路径下执行命令
- code-v3.0-LTS/OpenHarmony$ build/lite/hb/__main__.py set ##设置编译路径
- OHOS Which product do you need? (Use arrow keys)
-
- hisilicon
- ipcamera_hispark_aries
- wifiiot_hispark_pegasus
- ipcamera_hispark_taurus
- ❯ ipcamera_hispark_taurus_linux
-
- hndz
- hndz_imx6d
-
- ohemu
- qemu_ca7_mini_system_demo
- qemu_mini_system_demo
- qemu_riscv_mini_system_demo
- qemu_small_system_demo
- ## 选择产品ipcamera_hispark_taurus_linux并回车
- code-v3.0-LTS/OpenHarmony$ build/lite/hb/__main__.py build ##编译
复制代码 输出路径为out/hispark_taurus/ipcamera_hispark_taurus_linux
编译中遇到的问题
1) hisilicon/hispark_taurus_linux: [OHOS ERROR] …/…/…/build/lite/hap_pack.py
按要求安装打包工具与java环境,然后重新编译build/lite/hb/__main__.py build -f(不重新编译可能会由于缓存重复报错)。
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-setting.md
2) [OHOS ERROR] [3463/3532] ACTION //third_party/wpa_supplicant/wpa_supplicant-2.9:wpa_supplicant-2.9
[OHOS ERROR] /home/test/workspace/code-v3.0-LTS/OpenHarmony/prebuilts/python/linux-x86/3.8.5/bin/python …/…/…/build/lite/build_ext_components.py
检查sh是否为bash,如果不是,则运行sudo dpkg-reconfigure dash将shell修改为bash(参考DevEco Device Tool安装)。
编译单个模块
以编译softbus_lite为例
build/lite/hb/__main__.py build softbus_lite
编译脚本梳理
hb 的源代码在build/lite/hb路径下,其入口函数为__main__.py中的main()。
hb 支持以下命令
命令说明set构建配置env显示构建配置变量build编译clean清空编译输出deps显示组件依赖我们目前只关注set和build,下面只介绍这两个命令。
hb set
hb set的作用是生成产品配置文件,保存为ohos_config.json。
ohos_config.json 文件示例如下
- {
- "root_path": "/media/hndz-dhliu/C7968B675F10B93B/workspace/code-v3.0-LTS/OpenHarmony",
- "board": "imx6d",
- "kernel": "linux",
- "product": "hndz_imx6d",
- "product_path": "/media/hndz-dhliu/C7968B675F10B93B/workspace/code-v3.0-LTS/OpenHarmony/vendor/hndz/imx6d",
- "device_path": "/media/hndz-dhliu/C7968B675F10B93B/workspace/code-v3.0-LTS/OpenHarmony/device/hndz/imx6d/sdk_linux",
- "patch_cache": null
- }
复制代码 代码路径为build/lite/hb/set/set.py。
在产品,设备不变情况,无需多次执行 hb set命令。
hb build
hb build的作用是根据配置信息生成编译指导文件build.ninja,然后执行编译过程。
代码路径为build/lite/hb/build/build.py。
执行流程如下:
- 如果输出路径下存在build.ninja,则只执行编译过程。
- 否则如果使用了-f 选项,则删除输出目录,重新创建输出目录,执行GN配置和编译过程。
- 否则,则创建输出目录,执行GN配置和编译过程。
所以,如果修改了GN的配置文件,需要执行hb build -f命令,否则只需执行hb build。
编译脚本示例:
- build/lite/hb/__main__.py build -f -b release ##编译release版本
- build/lite/hb/__main__.py build -f -b release -n ##编译release版本,ndk
复制代码 hb deps
build/lite/hb/main.py deps -s communication -p hndz_imx6d --work_path . check
引用
获取OpenHarmony源码
OpenHarmony3.0全量代码(标准、轻量和小型系统)站点
编译
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |