鸿蒙系统编译方式

鸿蒙系统编译

  • 编译原理
  • 编译方式
    • 概述
    • hb编译
      • ohos-build
      • hb安装
      • 编译使用
    • build脚本
    • hpm
      • hpm介绍
      • 编译
      • 举例说明
  • 综合应用举例
    • 虚拟机中编译
    • docker中使用hpm编译

编译原理

编译构建指导:https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-build-all.md,文档介绍了鸿蒙系统编译原理和基本规则。阅读这部分文档,在开发初期,编译和阅读部分配置代码时能基本明白其意义和作用。

OpenHarmony编译系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能:

  • 以部件为最小粒度拼装产品和独立编译。
  • 支持轻量、小型、标准三种系统的解决方案级版本构建,以及用于支撑应用开发者使用IDE开发的SDK开发套件的构建。
  • 支持芯片解决方案厂商的灵活定制和独立编译。

更详细原理介绍,请自行阅读上面链接文档。基础编译工具gn和Ninja相关的非官方资料:
GCC、CMake、CMakelist、Make、Makefile、Ninja啥关系?一图讲透!
鸿蒙源码构建工具Gn 与 Ninja 的介绍及使用入门
GN语言和操作
鸿蒙构建系统——gn官方FAQ翻译,以及gn官方文档分享

gn、Ninja是google发展出来的,看相关的原始文档,需要访问google网站,以上文档应用同仁的总结,帮助理解gn、Ninja,以及理解和make、makefile的区别。gn、Ninja是发展出的一套新的编译工具,如make、makefile、cmake等。

网站链接
gn项目官网https://gn.googlesource.com/gn/
Ninja项目https://gitee.com/mirrors/ninja
Ninja官网https://ninja-build.org/

编译方式

概述

通读openharmony网站编译相关文档,鸿蒙系统有三种编译方式

命令实现方式
hbOpenHarmony的命令行工具,用来执行编译命令
build脚本build.py调用gn、ninja、gcc
hpm调用任意编译命令,具体有项目编译构建脚本决定,如make、build、hb等。

系统的具体编译方式,具体参照项目提供的文档,有些客制化系统,可能会使用项目自身配置的编译方式。
注意: 在使用以下编译方式时,基于搭建好的编译环境,如docker、虚拟机等,不需要再安装编译工具,直接执行编译命令即可。

hb编译

ohos-build

hb是python包ohos-build中的命令,ohos-build包官网:https://pypi.org/project/ohos-build/
在这里插入图片描述
hb是基于gn和Ninja的编译框架,用于编译鸿蒙系统组件。

hb安装

python3 -m pip install --user ohos-build

文档中出现的python3 -m pip install --user build/hb应该是笔误。除了从官网安装hb命令,有些鸿蒙系统(轻量、小型、标准都是鸿蒙系统)源码中的build/lite目录下包含hb源码,可以使用命令

python3 -m pip install --user build/lite

安装源码目录的hb。如果编译出现错误,或许可以尝试直接使用源码中的hb安装包,通过以上命令安装。hb是鸿蒙系统基本的命令行工具,源码目录位于鸿蒙系统根目录下build/lite/hb,ohos-build也可以下载到hb源码。

hb安装异常处理:https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/quick-start/quickstart-pkg-common-hberr.md

编译使用

常用命令

命令说明
hb set选择要编译的产品。hb set -h查看命令选项。
hb build执行编译,可以使用hb build -h查看详细的编译命令选项,如hb build -f(强制编译)
hb clean清除已编译结果。全量编译前使用,确保系统会全新编译目标文件。

编译执行步骤

系统类型文档地址
轻量系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/696549.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware虚拟机故障:“显示指定的文件不是虚拟磁盘“,处理办法

一、故障现象 由于虚拟机宕机,强制重新启动虚拟机后显示错误,没有办法启动虚拟机。 虚拟机有快照,执行快照还原,结果也不行,反复操作,在虚拟机文件目录出现很多莫名文件 二、故障原因 根据故障提示&#…

计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用30-基于深度卷积神经网络CNN模型实现物体表面缺陷检测技术的项目主要包括:物体表面缺陷检测技术项目介绍,数据构造,模型介绍。 物体表面缺陷检测技术是工业自动化…

识别AI论文生成内容,降低论文高AI率

AI写作工具能帮我们在短时间内高效生成一篇毕业论文、开通报告、文献综述、任务书、调研报告、期刊论文、课程论文等等,导致许多人开始使用AI写作工具作为撰写学术论文的辅助手段。而学术界为了杜绝此行为,开始使用AIGC检测系统来判断文章是由AI生成还是…

使用Navicat将MySql数据库导入和导出

一,导出数据表 1.使用Navicat打开数据库,右键数据库,点击转储SQL文件,点击结构和数据。 2.选择生成文件的地方 3.等待生成完成 4.生成完成 二,导入数据库表和数据SQL文件 1.新建一个数据库 2.右键选择运行SQl文件 记…

Java 对象序列化

序列化:把对象转化为可传输的字节序列过程称为序列化。 反序列化:把字节序列还原为对象的过程称为反序列化 序列化的作用是方便存储和传输,细节可参考如下文章: 序列化理解起来很简单 - 知乎序列化的定义 序列化:把对…

基于SSM的“图书仓储管理系统”的设计与实现(源码+数据库+文档)

基于SSM的“图书仓储管理系统”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统登录页面 人员管理信息页面 添加人员信息页…

2024最新软件测试【测试理论+ Linux】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …

机器人开发项目实现过程

比赛项目实现过程 第一步:设置远程桌面连接 登录机器人系统,设置网络,参考远程桌面连接20230525.mp4 外接显示器、鼠标和键盘 登录系统 账户:robuster 密码:123456 建议,手机开热点,机器人…

CorelDRAW2024设计新境界,等你解锁!

CorelDRAW,这款由加拿大Corel公司开发的平面设计软件,自从1989年问世以来,就以其强大的功能和用户友好的界面,在全球设计师中享有极高的声誉。今天,我们要聊的主角是它的最新版本——CorelDRAW 2024。 CDR永久版安装包…

K8s源码分析(一)-K8s调度框架及调度器初始化介绍

本文首发在个人博客上,欢迎来踩! 文章目录 调度框架介绍K8s scheduler 介绍K8s scheduler的初始化Cobra介绍K8s scheduler中初始化的源代码解析 调度框架介绍 这是官方对于v1.27调度框架的介绍文档:https://v1-27.docs.kubernetes.io/docs/…

IP定位技术在打击网络犯罪中的作用

随着互联网的普及和信息技术的发展,网络犯罪日益猖獗,给社会治安和个人财产安全带来了严重威胁。而IP定位技术的应用为打击网络犯罪提供了一种有效手段。IP数据云将探讨IP定位技术在打击网络犯罪中的作用及其意义。 1. IP定位技术的原理 IP&#xff08…

到底考不考CISP?纠结的看过来

专业认证如CISP(注册信息安全专业人员)成为了衡量专业水平的重要标准。 CISP的含金量懂的都懂,然而,是否要投入时间、精力和金钱去追求这样一个认证,对于许多人来说,依然是一个值得深思的问题。 那么到底…