[经验分享] 【PREPARE工作准备】(三)下载、编译OpenHarmony代码 原创 精华

诚迈_雨哥 显示全部楼层 发表于 2024-1-29 20:45:00

前言

终于等到下载代码的时刻了,业内不叫下载代码叫“拉代码”,上传代码叫“上库”,编译叫构建。

一、 安装路线

二、避坑指南

1. repo sync -c -j4,同步代码,数字是否越大越好?

要根据电脑配置选取合适的核数。数字4是指拉去代码的核数,数字越大拉取速度越快,太大会导致命中率下降,因而拉取代码失败,选择太小,拉取代码速度缓慢。

2. 系统编译32位,用例、组件能否编译成64位?

  • --target-cpu arm64, 表明为编译64位系统,没有则默认32位系统;
  • 系统编译完成后,测试用例以及个别组件编译也必须和系统位数一致,否则会导致崩溃 Crash;

三、代码拉取及编译

1. 代码拉取官方手册

参考网址:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/sourcecode-acquire.md

2. master 主干代码拉取

拉取代码之前要建立一个代码目录,例如: master_code

mkdir master_code
cd master_code

在新目录下拉取代码,如下指令逐条执行

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo start master --all
repo forall -c 'git lfs pull'
bash build/prebuilts_download.sh

3.修改dash为bash

终端输入命令: ls -l /bin/sh 显示结果是:/bin/sh -> dash

输入: sudo dpkg-reconfigure dash 出现选择,选择否回车,重新输入:ls -l /bin/sh

wyyname@n019949:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 6月  16  2023 /bin/sh -> /bin/bash

四、系统全量编译

1. Hi3518 编译(属于L1)

输入'hb set', 上下移动箭头选择产品型号,回车选择对应开发板,例如选择 ipcamera_hispart_aries

wps4.png

执行 hb build 构建

wps5.png

编译完成,如下图:

wps9.png

2. 3516-linux 编译

输入'hb set',选择 ipcamera_hispark_taurus_linux 使用 hb build -f 全量构建 3516/3518/3861是同类型,如图:

wps6.png

编译成功

wps11.png

3. Hi3516 编译(属于L2)

由于L2目前接触只涉及3516 在根目录输入:./build.sh --product-name Hi3516DV300

wps14.png

Hi3516DV300 编译成功

wps15.png

4. RK3568 编译

虚拟机13GB内存、12个处理器编译一套全量代码在2024年1月1日前至少需要4个小时。

1. 32 位系统编译(默认)

./build.sh --product-name rk3568 --ccache

2. 64 位系统编译

./build.sh --product-name rk3568 --target-cpu arm64 --ccache

3. 编译成功

wps16.png

五、组件编译举例

1. 单独编译内核

cd out/kernel/src_tmp/linux-5.10
export PRODUCT_PATH=vendor/hihope/rk3568
./make-ohos.sh TB-RK3568X0

2. Audio so 或者 bin 单独编译

./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/hal/hdi_passthrough:hdi_audio
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:audio_sample_capture --target-cpu arm64
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:audio_sample_event --target-cpu arm64
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:audio_sample_render --target-cpu arm64
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:idl_render
./build.sh --product-name rk3568 --build-target drivers/peripheral/audio/test/sample:idl_capture

3. audio用例全编译

./build.sh --product-name rk3568 --build-target audio_test_entry  --target-cpu arm64

4. 单编 arkui

./build.sh --product-name rk3568 --ccache --build-target libace_compatible

5. 单编 multimodalinput

./build.sh --product-name rk3568 --ccache --build-target libmmi-server
./build.sh --product-name rk3568 --ccache --build-target libmmi-util

六、恭喜您!

下载、编译OpenHarmony代码成功,你可以尽情遨游在 OpenHarmony 智慧的海洋,这里汇聚了全世界几十年来无数优秀大佬智慧的结晶,在这里你可以汲取丰富多样的知识,为你今后的开发之路积累必要的知识库,说不定还能找到梦寐以求的宝藏! 当然,距离一个专业的OpenHarmony贡献者,还有两步之遥。提交代码和提交代码之前的修改、烧录、测试,重点是烧录。下一章节我们就学习一下不同开发板的烧录教程。

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部