Openharmony上如何编译与运行HelloWorld

Openharmony的编译构建--基础篇 Openharmony 编译构建 阅读详情
AI摘要

本文介绍了如何在OpenHarmonyV3.1-Release版本上创建并运行第一个HelloWorld应用。通过将C++源代码放入指定目录,创建BUILD.gn文件,修改bundle.json来配置编译过程,然后使用build.sh脚本进行编译和部署。最终,HelloOpenHarmony可执行程序在开发板上成功运行,展示了OpenHarmony的程序构建流程。

Openharmony的第一个应用--Hello world

大家都明白的Hello World的C++代码

// FirstApp.cpp
#include <iostream>
int main(int argc, char *argv[])
{
    std::cout << "Hello Openharmony!" << std::endl;
    return 0;
}

问题来了,接下来如何将FirstApp.cpp加入Openharmony进行编译,然后运行呢?此过程涉及Openharmony的子系统,编译构建子系统,关于编译构建的整体复杂的流程不表,按照能代码能跑的原则,如下流程一步一步操作运行起来后,后续会在章节中详细解释为何如此。

开发环境介绍

代码版本:Openharmon V3.1-Release

开发板:rk3568

1.首先将FirstApp.cpp文件放至Openharmon V3.1-Release的/base/account目录下。

2.创建/base/account/BUILD.gn文件,内容如下

# HelloOpenHarmony为可执行程序名称
# ohos_executable为Openharmony编译可执行程序的模板
ohos_executable("HelloOpenHarmony") {
  sources = [
    "FirstApp.cpp",
  ]
}

3.修改/base/account/bundle.json如下

在sub_component中添加"//base/account/os_account:HelloOpenHarmony"

"sub_component": [
  "//base/account/os_account/services:services_target",
  "//base/account/os_account/services/accountmgr/src/appaccount:app_account_service_core",
  "//base/account/os_account/frameworks/appaccount/native:app_account_innerkits",
  "//base/account/os_account/frameworks/osaccount/core:os_account_core",
  "//base/account/os_account/frameworks/common:common_target",
  "//base/account/os_account/frameworks/osaccount/native:os_account_innerkits",
  "//base/account/os_account/interfaces/kits/napi/appaccount:appaccount",
  "//base/account/os_account/interfaces/kits/napi/distributedaccount:distributedaccount",
  "//base/account/os_account/interfaces/kits/napi/osaccount:osaccount",
  "//base/account/os_account/sa_profile:account_sa_profile",
  "//base/account/os_account/tools:os_account_tools",
  "//base/account/os_account:HelloOpenHarmony"
],

4.编译

# 此为完整编译,也可以选择子组件进行单独编译,加上-T HelloOpenHarmony指定模块进行编译也可以生成HelloOpenHarmony的可执行程序
./build.sh --product-name rk3568
./build.sh --product-name rk3568 -T HelloOpenHarmony

5.运行

编译成功后,在/out/rk3568/common/common/目录下可以找到HelloOpenHarmony的可执行程序,此时将HelloOpenHarmony推送至开发板的/system/bin目录下,并通过chmod修改其可执行权限。结果如下:

# 通过hdc_std推送至开发板的过程较易,略过(如有疑问,欢迎留言)
# 只展示在hdc_std shell进入开发板之后的操作与结果
# chmod 777 /system/bin/HelloOpenHarmony
# ls -ali /system/bin/HelloOpenHarmony
2297 -rwxrwxrwx 1 root root 25300 2020-01-15 09:29 /system/bin/HelloOpenHarmony
# ./system/bin/HelloOpenHarmony
Hello Openharmony!

此时,运行在Openharmony上的第一个可执行程序就完成了。

Openharmony程序编译构建过程简单描述

1.关于bundle.json

一个或多个bundle.json组成Openharmony的某个子系统,此例中将HelloOpenHarmony做个一个组件添加至账号子系统(account)中参与编译。

2.关于BUILD.gn

BUILD.gn可以看做一个组件的makefile文件。

3.综合下来,HelloOpenHarmony编译构建过程,现在可以理解为首先当./build.sh --product-name rk3568命令执行时,会找到子系统的bundle.json,然后bundle.json根据sub_component的组件列表,找到组件的BUILD.gn,然后交叉编译工具对BUILD.gn定义的模板(ohos_executable)进行编译。

4.注意

  • 以上的编译构建过程是建立在Openharmony V3.1以前的版本之上,Openharmony V3.2之后的版本流程略有差别。

  • 以上只是一个简易的描述,详细的编译构建过程,如果想了解更多,会另外开辟章节进行描述。

后续更精彩

1.关于service ability的前世今生

2.Openharmony的分布式软总线

3.后续的文章难度会有所增加,欢迎大家留言反馈。

移植案例与原理 - HPM包描述文件bundle.json 文件bundle.json一般具有如下格式,对各个属性值的解释见注释部分。因为是json文件,注意下是对象还是数组。对象由花括号{}括起来的逗号分割的成员构成,成员是字符串键和值由逗号分割的键值对组成。数组是由方括号[]括起来的一组值构成。"name": "@ohos/", # HPM部件的英文名称, 由@符合、组织名称、部件名称组成。"description": "component description", # 部件描述。 阅读详情

相关推荐

openharmony-基础篇-模块配置规则

模块编译

zhoudidong的专栏 4936

openharmony-基础篇-部件bundle.json

部件bundle.json说明

zhoudidong的专栏 2795

鸿蒙OpenHarmony【小型系统 编写“Hello World”程序】(基于Hi3516开发板)

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点如果。

m0_62167422的博客 1572

OpenHarmony添加自定义的子系统、部件、模块

这里我们将OpenHarmony的两个例子添加到源码中并使其编译到系统中,这里有一点需要注意的是不可以将自定义的子系统放到其他已经定义的子系统目录下,vendor下的product文件夹也被认为成一个子系统,比如/就作为product_hihope子系统存在的,其定义在/

weixin_44205232的博客 4397

OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——环境配置

这几天搞鸿蒙,需要编译一些第三方库到鸿蒙系统使用。头疼死了,搞了一个多星期总算搞定了。开贴记坑。

我是晚秋,我在这里,谢谢你的看见。 3362

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

m0_62167422的博客 1297

OpenHarmony C++公共基础类库应用案例:HelloWorld

该程序是基于OpenHarmony的C++公共基础类库的简单案例:HelloWorld。

weixin_57712117的博客 478

OpenHarmony环境搭建指南:编译HelloWorld全流程

OpenHarmony作为面向全场景的开源操作系统,其编译环境搭建是开发者绕不开的第一道门槛。与普通工程不同,OpenHarmony采用GN与Ninja组成构建系统,通过hb工具统一调度,最终产出可执行组件或HAP应用包。理解构建工具链、源码同步、产品配置之间的关系,是保证环境一次搭对的关键。对于刚接触的开发者,可以先从系统组件HelloWorld入手,掌握模块、部件、产品的三层结构,再逐步深入镜像集成与应用打包。本文以Ubuntu环境为例,从机器配置、repo同步、hb安装到实际编译步骤,结合常见问题的排

weixin_32308101的博客 229

在openharmony中部署helloworld应用(超详细)(命令行)

基于OpenHarmony标准系统编写的基础程序类:HelloWorld

gkxg001的博客 611

【OpenHarmony嵌入式硬件开发】基于OpenHarmony标准系统的C++公共基础类库案例1:SafeBlockQueue

该程序是基于OpenHarmony的C++公共基础类库的简单案例:HelloWorld。凌蒙派-RK3568开发板-OpenHarmoy: 该库为凌蒙派RK3568开发板的OpenHarmony gitee仓,由福州市凌睿智捷电子有限公司出品 - Gitee.com。

xzs51job的专栏 546

实战指南:在华为防火墙上构建基于自签CA的SSL证书挑战式认证体系

本文详细介绍了在华为防火墙上构建基于自签CA的SSL证书挑战式认证体系的实战指南。通过自签CA证书生成、华为防火墙SSL VPN配置、客户端安装与测试等步骤,帮助企业实现更安全的远程办公接入方案,有效防范密码泄露风险。文章重点讲解了证书挑战登录的实现原理和配置细节,适用于企业网络安全建设。

weixin_32428571的博客 256

OpenHarmony 开源鸿蒙北向开发——2.第一个工程HelloWorld

我们打开IDE后,选择新建项目选择这一个设置参数设置完成后选择Finish项目创建后会自动下载一些东西,不用担心。

我是晚秋,我在这里,谢谢你的看见。 273

VL53L0X加盖玻片后精度暴跌?手把手教你完成串扰校准(CrossTalk Calibration)

本文详细解析了VL53L0X激光测距传感器加盖玻片后精度下降的原因,并提供了串扰校准(CrossTalk Calibration)的完整解决方案。通过分步指导和实用代码示例,帮助工程师恢复毫米级测距精度,适用于智能门锁、扫地机器人等应用场景。

weixin_33708432的博客 539

鸿蒙OpenHarmony【小型系统编写“Hello World”程序】 (基于Hi3516开发板)

下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!

m0_62167422的博客 1263

Origin科研绘图——桑基图

是一种用于展示“流动”(flow)关系的可视化图表,常用于呈现能量流、物质流、资金流、信息流等在不同节点之间的传递和分配情况。它最大的特点是用“宽度可变的流线”来直观表示数量大小——流线越宽,代表流量越大,因此特别适合理解复杂系统中资源从哪里来、到哪里去、以及不同路径所占比例。为该流程对应的数量。只需将各个流程逐项填写在 A、B、C 三列即可,流程的排列顺序并非关键,确保起点、终点及对应数值准确才是最重要的。与柱状图、饼图不同,桑基图不仅展示“多少”,还展示“从哪到哪”。至此,本期教程就结束啦。

weixin_41301530的博客 1394

音频测试专题

麦克风与扬声器单体测试指标及整机性能测试概述 麦克风测试指标包括频率响应、灵敏度、指向性等10项关键参数,用于评估声音捕捉和信号转换性能。扬声器测试包含频率响应、灵敏度等12项指标,涉及声学特性和物理参数。整机性能测试覆盖安静、嘈杂和正常三种环境,重点检测麦克风底噪、清晰度、扬声器音量及通话质量等12项功能指标。两类单体测试与整机测试共同构成完整的音频设备质量评估体系,确保产品在不同场景下的性能表现。

weixin_52640906的博客 1315

openharmony配置流程,hispark_taurus ai开发套件

openharmony配置流程

2301_81132679的博客 2137

基于AUTOSAR的汽车电子项目--电动助力转向系统

基于AUTOSAR的汽车电子项目开发通常涵盖广泛的领域,例如动力系统控制、车身电子、信息娱乐系统、高级驾驶辅助系统(ADAS)等。以下是一个简化的示例项目,展示了如何在AUTOSAR环境下开发一个电动助力转向系统(Electric Power Steering, EPS)的控制软件

MHD0815的博客 2126

RK3568 OH5.1 编译运行程序hellworld

代码根目录创建sample子系统文件夹在子系统目录下创建hello部件文件夹hello文件夹中创建hello源码目录及源码构建文件BUILD.gn及部件配置文件bundle.json。修改子系统配置文件添加自定义的sample子系统修改产品配置文件在产品选中加入自定义的子系统。

欲盖弥彰1314 447

环境配置与基础教程:当前大厂主流套路:使用 MLflow 全链路管理 YOLO 实验参数、指标与模型版本

YOLO26与MLflow结合实现高效实验管理 YOLO26通过移除DFL模块和实现无NMS端到端推理,在CPU推理速度上提升43%,同时简化了模型导出流程。MLflow 3.10/3.11版本新增多工作区支持、成本追踪和安全序列化等功能,为机器学习实验提供全生命周期管理。两者结合可解决传统"截图+Excel"式实验管理的痛点,实现参数追踪、指标对比和模型版本控制的自动化。 关键优势: YOLO26架构优化带来显著性能提升 MLflow提供实验到生产的全链路管理 原生集成简化了计算机视觉

ZXSXJ的博客 190

【Unity】【2D】用连续图片生成动画Animation的简明步骤

本文介绍了Unity中使用2D连续图片制作2D动画Animation的简明步骤。

O青草O的博客 Unity和游戏制作知识分享 715

OpenHarmony编写第一个软件HelloWorld

文章目录1. 目的2. 官方开发文档2.1. 基本概念3. 源码实现3.1. 工程目录3.2. 源代码3.3. 源码见4. 编译与烧录4.1. 编译指令4.2. 镜像烧录4.3. 应用测试 1. 目的 编译命令行工具 HelloWorld,测试编译环境及项目配置 开发硬件环境:树莓派 3B+ 2. 官方开发文档 根据开发硬件,选择文档标准系统编译构建指导(在这费了半天劲,找错了相关文档) 2.1. 基本概念 平台 开发板和内核的组合,不同平台支持的子系统和组件不同。平台基于硬件和内核,在项目中,~/oho

lxmuyu的专栏 2249

YOLO26改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。YOLO26主要用于轻量化应用部署,相关轻量化改进与其整体架构非常适配。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 1091

OpenHarmony 的helloWorld尝试

openharmony中的helloWorld

m0_51139704的博客 1327

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【OpenHarmony】测试代码编译执行流程

之前的文章我们搭建了小熊派的开发环境,并且拉取了源码到本地编译后烧写到了小熊派中,这一章将在上一章的基础上,编写一个用户态的执行程序,按照 OpenHarmony 的编译框架编译程序,然后在串口命令行执行程序

嵌入式学习记录站点 2919

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

DevEco Studio3.0Beta-OpenHarmony创建和运行HelloWorld

开发环境配置好后,可以通过运行HelloWorld工程来验证环境设置是否正确。 创建一个新工程 1.在DevEco Studio的欢迎页,选择Create Project开始创建一个新工程。 2.根据工程创建向导,选择“Empty Ability”模板,点击Next。 3.点击Next,各个参数保持默认值即可,点击Finish,关于各个参数的详细介绍,请参考创建和配置新工程。 4.点击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。 运行Hello...

weixin_69135651的博客 636

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: Openharmony的L0与L2系统环境搭建编译烧录
下一篇: Openharmony应用NAPI详解--基础篇
procedurecode
博客等级 码龄20年 3298粉丝 67原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值