OpenHarmony开发——系统源码编译

随着OpenHarmony-v3.1发布,开发者关注其系统开发。本文介绍从源码拉取到编译成功的过程,使用官方推荐的Ubuntu20作编译环境、Hi3516DV300开发板,借助Docker搭建编译环境,还说明了拉取源码、开发环境配置及源码编译的具体操作和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

随着OpenHarmony-v3.1的发布,越来越多的开发者将目光聚焦到OpenHarmony系统开发上。对于首次接触OpenHarmony的开发者来说,如何进行源码编译是一个大难题,本文将详细介绍源码拉取到编译成功的过程,希望对开发小伙伴有所帮助。

开发环境准备

我们将使用官方推荐的Ubuntu20作为编译环境,开发板使用Hi3516DV300,由于整个编译工具链过于庞大,手动搭建编译环境非常复杂,并且容易出错,这里将使用docker搭建编译环境,可以事半功倍

安装Docker

1.首先删除可能已有的docker
$ sudo apt-get remove docker docker-engine docker.io containerd runc

2.更新apt,安装基础工具
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg lsb-release

3.添加docker官方GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4.添加稳定版docker源到apt
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5.安装docker
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

6.测试docker
$ sudo docker run hello-world

7.拉取docker编译环境
$ sudo docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0

验证docker是否安装成功 

拉取源码

源码拉取流程如下:

 操作命令如下:

1.更新apt
$ sudo apt update

2.安装git
$ sudo apt install git-all

3.注册gitee账号,配置git ssh-key
$ git config --global user.name "yourname"
$ git config --global user.email "your-email-address"
$ git config --global credential.helper store

4.安装python3.8,需要注意,ubuntu有可能自带有python2.7,可能引发冲突,ubuntu20
$ sudo apt-get install python3.8

设置python和python3软链接为python3.8
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
5.安装码云repo工具
$ curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo  
#如果没有权限,可下载至其他目录,并将其配置到环境变量中
$ chmod a+x /usr/local/bin/repo
$ pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

6.拉取代码
创建代码文件夹
$ mkdir /home/openharmony3.0
$ cd /home/openharmony3.0
拉取代码
$ repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0.1-LTS --no-repo-verify
$ repo sync -c
$ repo forall -c 'git lfs pull'

开发环境 

Visual Studio Code进行远程开发方式,需要安装Remote Development插件,步骤如下:

① 下载Visual Studio Code并安装,官网链接:Visual Studio Code - Code Editing. Redefined

② 安装Remote Development插件

③ 点击左下角绿色图标

 ④ 选择连接主机

⑤ 选择增加远程主机

 ⑥ 输入ssh 用户名@IP

 ⑦ 输入账号密码

 ⑧ 选择远程主机代码目录

 ⑨ 成功后会展示代码目录

源码编译

1.在vscode中打开控制台,按ctrl+`可以打开,创建并启动docker容器,上一步执行完毕就直接进入容器内部了
$ sudo docker run -it -v $(pwd):/home/openharmony --name ohosc swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0

2.修改容器内部的apt源为华为镜像
# sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
# sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

3.更新apt
# apt update

4.安装ruby、ccache
# apt install ruby
# apt install ccache

5.安装编译依赖工具包
# ./build/prebuilts_download.sh

6.执行编译命令,编译耗时较久,首次编译预计1.5小时左右
# ./build.sh --product-name Hi3516DV300 --ccache

 

注意:

不要重复执行sudo docker run -it ...,

这样会导致重复创新多个容器,第一次编译执行完后,容器会停止,那么就需要启动容器

$ sudo docker start ohosc

// 这里ohosc是上一步 --name ohosc 给容器起的别名

进入容器内部执行编译

$ sudo docker exec -it ohosc /bin/bash

# ./build.sh --product-name Hi3516DV300 --ccache

编译过程输出日志如下:

 编译成功提示:

 

 

 

<think>首先,用户的问题是:“我想了解OpenHarmony的定制开发方法和相关工作 请问OpenHarmony 定制开发指南 开发流程 适配方法”。这涉及到OpenHarmony的定制开发,包括开发指南、流程和适配方法。 根据系统级指令,我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考站内引用: - [^1]: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总等。 - [^2]: OpenHarmony(鸿蒙南向开发)——标准系统移植指南(一)。 - [^3]: OpenHarmony 开发环境搭建文档。 - [^4]: 关于kernel.mk在编译流程中的信息。 用户的问题是关于OpenHarmony的定制开发,所以我需要基于这些引用构建回答。引用中提到南向开发、移植指南等,这与定制开发相关。 关键点: - 定制开发通常涉及系统移植、适配硬件、修改内核等。 - 引用[2]提到标准系统移植指南。 - 引用[4]讨论了编译流程中的内核处理。 - 引用[3]有开发环境搭建的信息。 结构回答: 1. **介绍OpenHarmony定制开发**:简要解释什么是定制开发。 2. **开发流程**:描述定制开发的一般步骤。 3. **适配方法**:详细说明如何适配硬件或定制功能。 4. **参考资源**:提供相关指南和文档链接。 5. **生成相关问题**:在末尾添加相关问题。 确保回答真实可靠:基于提供的引用,避免猜测。引用中提到“移植指南”,所以我可以强调移植作为定制的一部分。 使用中文回答。 生成相关问题:在回答末尾添加几个相关问题。 现在,构建回答: - **开头**:直接回应问题。 - **开发流程**: - 环境搭建(引用[3])。 - 代码获取和编译(引用[4])。 - 移植和适配(引用[2])。 - **适配方法**: - 硬件适配(如芯片移植)。 - 软件定制(如修改内核)。 - **引用标识**:在相关部分末尾添加引用,如[^2]。 最后,添加相关问题。 完整回答框架: 1. 介绍OpenHarmony定制开发。 2. 开发流程:包括环境搭建、代码获取、编译、移植、测试等。 3. 适配方法:如针对不同硬件的移植方法。 4. 提供资源链接。 5. 相关问题。</think>### OpenHarmony 定制开发指南 OpenHarmony 是一个开源的分布式操作系统,支持多种设备类型。定制开发通常涉及修改系统内核、适配特定硬件或添加新功能,以满足特定需求。以下是基于官方文档和实践经验的开发流程和适配方法,内容参考了相关指南和知识点[^1][^2][^4]。 #### 1. **定制开发流程** OpenHarmony 的定制开发遵循一个结构化流程,确保系统稳定性和兼容性: - **步骤 1: 环境搭建** 首先,搭建开发环境。包括安装必要的工具链(如 GCC、Python)和配置开发平台(Windows 或 Ubuntu)。例如,Ubuntu 环境需安装依赖库: ```bash sudo apt-get update && sudo apt-get install git-lfs binutils-dev flex bison ``` 参考文档提供了详细的环境搭建指南[^3]。 - **步骤 2: 代码获取与初始化** 从 OpenHarmony 官方仓库克隆源码: ```bash git clone https://gitee.com/openharmony/manifest.git repo init -u https://gitee.com/openharmony/manifest.git -b master repo sync ``` 这一步确保代码基础一致,便于后续定制[^4]。 - **步骤 3: 编译与构建** 使用 OpenHarmony编译系统(如 build.sh)构建基础系统编译前需配置目标设备(如轻量系统或标准系统): ```bash ./build.sh --product-name {product_name} # 例如,Hi3516DV300 开发板 ``` 编译过程中,系统会自动处理内核补丁和依赖,确保代码环境纯净[^4]。 - **步骤 4: 定制与移植** 根据需求修改代码: - **内核定制**:编辑 `kernel/linux-4.19` 目录下的文件,如添加驱动或调整配置。 - **系统服务定制**:修改 `foundation` 或 `applications` 模块,添加新功能。 移植指南强调了保持内核原代码环境的重要性,以避免编译错误[^4]。 - **步骤 5: 测试与部署** 在目标硬件上刷写系统镜像,并使用测试框架(如 XTS)验证兼容性。问题排查可通过日志分析工具完成。 整个流程强调迭代开发:从环境准备到测试部署,每个阶段需文档化和版本控制。 #### 2. **适配方法** 适配是定制开发的核心,针对不同硬件或场景: - **硬件适配** 针对新芯片或开发板,需实现 HAL(硬件抽象层)接口: - 驱动开发:在 `drivers/peripheral` 目录添加或修改驱动代码,例如为传感器编写 HDF(硬件驱动框架)模块。 - 设备树配置:更新 `vendor/{company}/{device}` 中的设备树文件(.dts),定义硬件资源。 标准系统移植指南提供了详细示例,如 GPIO 或 I2C 适配[^2]。 - **软件功能定制** - **裁剪系统组件**:通过 `build/lite/product` 中的配置文件,移除不需要的模块(如 GUI 服务),减小镜像大小。 - **添加新特性**:例如,集成 AI 框架时,修改 `foundation/ai` 模块并确保 API 兼容。 适配方法需遵循 OpenHarmony 的模块化设计原则,避免破坏系统完整性[^1]。 - **跨平台移植** 对于轻量系统(如 IoT 设备),重点优化内存占用: - 使用 `kernel/liteos_m` 替代 Linux 内核,减少资源消耗。 - 适配指南建议优先处理中断处理和电源管理[^1]。 #### 3. **参考资源与最佳实践** - **官方文档**: - [OpenHarmony 移植指南](https://gitee.com/openharmony/docs)(包括南向开发全流程)[^2]。 - [开发环境搭建教程](https://qr18.cn/CgxrRy)(涵盖 Windows/Ubuntu 配置)[^3]。 - **最佳实践**: - 在定制前备份代码,使用 Git 分支管理变更。 - 优先参考社区案例(如 Hi3516DV300 移植),减少适配风险。 - 性能优化时,注意编译选项如 `-Os`(优化大小)[^4]。 定制开发需要扎实的系统知识,建议从官方移植指南入手,逐步深入[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值