OpenHarmony开发者论坛
标题:
【PREPARE工作准备】(三)下载、编译OpenHarmony代码
[打印本页]
作者:
诚迈_雨哥
时间:
2024-1-29 20:45
标题:
【PREPARE工作准备】(三)下载、编译OpenHarmony代码
[md]# 前言
终于等到下载代码的时刻了,业内不叫下载代码叫“拉代码”,上传代码叫“上库”,编译叫构建。
# 一、 安装路线
* [1.避坑指南](二、避坑指南)
* [2.代码拉取及编译](三、代码拉取及编译)
* [2.1 Hi3518编译(属于L1)](#1.Hi3518编译(属于L1))
* [2.2 3516-linux编译](#2.3516-linux编译)
* [2.3 Hi3516编译(属于L2)](3.Hi3516编译(属于L2))
* [2.4 RK3568编译](4.RK3568编译)
* [3.系统全量编译](四、系统全量编译)
* [4.组件编译举例](五、组件编译举例)
# 二、避坑指南
## 1. `repo sync -c -j4`,同步代码,数字是否越大越好?
要根据电脑配置选取合适的核数。数字4是指拉去代码的核数,数字越大拉取速度越快,太大会导致命中率下降,因而拉取代码失败,选择太小,拉取代码速度缓慢。
## 2. 系统编译32位,用例、组件能否编译成64位?
* `--target-cpu arm64`, 表明为编译64位系统,没有则默认32位系统;
* 系统编译完成后,测试用例以及个别组件编译也必须和系统位数一致,否则会导致崩溃 Crash;
# 三、代码拉取及编译
## 1. 代码拉取官方手册
参考网址:
https://gitee.com/openharmony/do ... urcecode-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](
https://forums-obs.openharmony.c ... ixdzx5onzgxn4io.png
"wps4.png")
![](./figures/wps4.png)
执行 `hb build` 构建
![wps5.png](
https://forums-obs.openharmony.c ... nzkniwy27jun541.png
"wps5.png")
![](./figures/wps5.png)
编译完成,如下图:
![wps9.png](
https://forums-obs.openharmony.c ... 2272jkk1561h7hf.png
"wps9.png")
![](./figures/wps9.png)
## 2. 3516-linux 编译
输入'hb set',选择 `ipcamera_hispark_taurus_linux`
使用 `hb build -f` 全量构建
3516/3518/3861是同类型,如图:
![wps6.png](
https://forums-obs.openharmony.c ... x1maulq1mwobiqd.png
"wps6.png")
![](./figures/wps6.png)
编译成功
![wps11.png](
https://forums-obs.openharmony.c ... ayadiai1yg5ip0p.png
"wps11.png")
![](./figures/wps11.png)
## 3. Hi3516 编译(属于L2)
由于L2目前接触只涉及3516
在根目录输入:`./build.sh --product-name Hi3516DV300`
![wps14.png](
https://forums-obs.openharmony.c ... mfliq8lfaayghgy.png
"wps14.png")
![](./figures/wps14.png)
Hi3516DV300 编译成功
![wps15.png](
https://forums-obs.openharmony.c ... xgbllz0jaalndxj.png
"wps15.png")
![](./figures/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](
https://forums-obs.openharmony.c ... isp44zjb6c6sbrm.png
"wps16.png")
![](./figures/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贡献者,还有两步之遥。提交代码和提交代码之前的修改、烧录、测试,重点是烧录。下一章节我们就学习一下不同开发板的烧录教程。
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5