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