OpenHarmony源码解析之编译构建


📚往期学习笔录📝:

📝 鸿蒙(HarmonyOS)北向开发知识点记录~
📝 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
📝 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
📝 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
📝 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
📝 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
📝 记录一场鸿蒙开发岗位面试经历~
📝 持续更新中……


前言

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代、基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。最近在学习OpenHarmony源代码,个人认为学习有三个阶段,分别是看、实操、写(归纳总结),本着追求学习的终极目标,因此有了这篇文章。

一、OpenHarmony编译框架特点

OpenHarmony编译框架是基于模块化的,从大到小依次划分为产品、子系统集(或领域)、子系统、部件、模块、特性。这种模块化的树状编译框架,非常方便根据目标产品硬件资源的大小进行灵活的裁剪,从而实现“统一OS,弹性部署”的目标。

1.产品(product)
产品是基于解决方案为基于开发板的完整产品,主要包含产品对OS的适配、部件拼装配置、启动配置和文件系统配置等。build.sh编译的时候通过–product-name编译选项指定;hb编译的时候通过hb set进行设置。

#适用于标准(即L2或standard)系统编译
./build.sh --product-name rk3568 --ccache

cd build #进入源码下build目录
hb set   #执行hb set命令,选择对应的产品名称
hb build #执行hb build命令,进行编译

2.子系统集(domain)
OpenHarmony技术架构中有四大子系统集:“系统基本能力子系统集”、“基础软件服务子系统集”、“增强软件服务子系统集”、“硬件服务子系统集”。四大子系统不会直接出现在编译选项或者参数中,而是有对应的一级源代码文件夹:“系统基本能力子系统集”对应源码foundation文件夹;“基础软件服务子系统集”和“硬件服务子系统集”对应源码base文件夹;“增强软件服务子系统集”对应源码domains文件夹。

.
├── applications //应用程序
├── arkcompiler  //ark编译器
├── base         //“基础软件服务子系统集”和“硬件服务子系统集”
├── build        //编译目录
├── build.py -> build/lite/build.py //软链接
├── build.sh -> build/build_scripts/build.sh //软链接,标准系统编译入口
├── commonlibrary  //通用库
├── developtools   //开发工具
├── device         //芯片相关
├── docs           //文档md文件目录
├── drivers        //驱动文件
├── foundation     //“系统基本能力子系统集”
├── ide            //ide
├── interface      //接口
├── kernel         //内核,liteos-m,liteos-a,linux,uniproton
├── napi_generator //native api相关
├── prebuilts      //编译工具路径
├── productdefine  //产品定义
├── qemu-run -> vendor/ohemu/common/qemu-run //qemu模拟器运行脚本
├── test           //测试用例
├── third_party    //三方库
└── vendor         //产品

3.子系统(subsystem)
子系统是一个逻辑概念,它

### 编译野火OpenHarmony 3.2源码指南 为了成功编译野火OpenHarmony 3.2版本的源代码,需遵循一系列特定的操作流程。此过程涉及环境准备、依赖项安装以及具体的构建指令。 #### 环境配置 确保开发机器上已正确设置Linux操作系统作为工作平台。对于openSUSE发行版而言,除了常规软件包外,还需特别注意安装必要的API头文件来支持后续操作[^1]: ```bash zypper install linux-glibc-devel ``` 上述命令用于获取系统所需的C库开发文件,这对于编译过程中链接器解析标准函数至关重要。 #### 安装依赖工具链 针对OpenHarmony项目特有的需求,建议按照官方文档指示完成相关依赖组件的部署。这通常包括但不限于Git、Python以及其他辅助工具和服务端口开放情况确认等前置条件满足。 #### 获取并初始化仓库 通过克隆指定分支的方式拉取最新的稳定版源码至本地目录下: ```bash git clone https://gitee.com/openharmony/kernel_liteos_a.git -b openharmony-3.2-release wildfire_openharmony_3_2 cd wildfire_openharmony_3_2 ``` 这里假设目标设备架构适配LiteOS-A内核实现路径下的`wildfire`系列板卡支持特性集。 #### 构建前准备工作 进入源码根目录后执行预处理脚本以适应当前主机环境变量设定,并下载额外资源如第三方库或补丁集合: ```bash source build/envsetup.sh ohos_build_prepare ``` 这些步骤有助于简化之后的实际编译环节复杂度管理问题。 #### 执行编译任务 启动正式编译进程之前,请再次验证所有前提要素均已妥善安排到位。接着运行以下命令触发整个项目的自动化组装机制: ```bash gn gen out/wildfire --args='product=wildfire board=hi3861' ninja -C out/wildfire ``` 此处参数选项中的`product`代表产品型号而`board`则指定了具体硬件平台名称;实际应用时应依据实际情况调整相应值域范围内的合法输入形式。 #### 后续处理措施 一旦编译顺利完成,则会在输出子文件夹内部形成可供烧录使用的固件映像及其他产物资料。此时可进一步参照配套说明文档开展测试验证活动直至最终发布上线阶段为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值