Openharmony上如何编译与运行HelloWorld

news/2023/5/28 9:09:55

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.后续的文章难度会有所增加,欢迎大家留言反馈。

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

中国移动“良心”了,18元保号套餐,或许能完美替代达量不限速

我国的通信市场一直都是“三分天下”的局面&#xff0c;其中中国移动是三大运营商中用户数量最多的一家&#xff0c;而中国移动的流量套餐,在三大运营商中算是比较贵的了&#xff0c;随着4G网络的成熟&#xff0c;流量已经超越通讯成为三大运营商的主要盈利来源。 上个月随着5…

从中国电信和中国移动的套餐使用查询业务浅谈数据同步

6月的最后一天&#xff0c;想查查自己的套餐使用情况&#xff0c;于是发短信给电信客服&#xff0c;得到的回复是这样&#xff1a;“尊敬的用户您好&#xff01;每月1-2号全天、3号的0点至8点及月末最后一天为系统出账期&#xff0c;可能无法查询您的消费情况&#xff0c;敬请谅…

等保2.0时代,企业如何开展移动互联安全合规建设

根据《网络安全法》规定“国家实行网络安全等级保护制度”。等级保护作为我国在网络安全方面的基本制度将长期实行下去。等级保护2.0时代&#xff0c;行业单位未落实网络安全等级保护义务将有可能面临被有关部门责令整改、行政处罚、暂停注册、暂停运营的风险。 据统计&#xf…

webview的使用套餐,androidstudiondk配置

LOAD_CACHE_ELSE_NETWORK&#xff1a;只要缓存可用就加载缓存&#xff0c;哪怕它们已经过期失效。如果缓存不可用就从网络上加载数据。 LOAD_NO_CACHE&#xff1a;不加载缓存&#xff0c;只从网络加载数据。 LOAD_CACHE_ONLY&#xff1a;不从网络加载数据&#xff0c;只从缓存…

无需去营业厅,8元不换号不换卡修改手机套餐

(营业厅怎么都改不了的套餐,在手机上就可以修改了) 很多人的手机都是两张卡,本来话费就用不了多少,但是各种套路下套餐都是越来越高,而且营业厅的人都会说在合约期内无法办理, 一个月几十元甚至于一百多元吧,今天在这里特地的给禅友们奉献上一期如何给自己的手机卡改…

java编写套餐_JVM套餐

这几天研习了一下《深入理解Java虚拟机》这本书&#xff0c;算是补补课、充充电&#xff0c;有边看边记笔记的习惯(不然看完还是忘)&#xff0c;分享给大家。稍微有些长&#xff0c;但还是没有各个方面覆盖到&#xff0c;希望最好能够帮助到一些人。一、JVM&#xff1a;虚拟机是…

5分钟自动更新php,使用织梦计划任务功能让网站每5分钟更新一次

使用过dedecms织梦系统的人都知道有一个计划任务的功能&#xff0c;这个功能很多人不知道怎么使用&#xff0c;今日小编就讲讲如何使用计划任务让网站每5分钟自动更新首页&#xff0c;也就是自动生成 内容来自dedecmsindex.html文件&#xff0c;让网站的静态文件保持一个更新的…

【C语言】动态内存实现通讯录(malloc,calloc,realloc)

目录 一、为什么要存在动态内存开辟 二、动态内存函数 2.1 malloc 2.1.1 函数介绍 2.1.2 函数的使用 2.1.3 free 2.2 calloc 2.2.1 函数介绍 2.2.2 函数的使用 2.3 realloc 2.3.1 函数的介绍 2.3.2 函数的使用 三、改进通讯录 3.1 初始化 3.2 增加信息 3.3 排序&am…

dede修改描述description限制字数长度

修改了好几个地方&#xff1a; 1、在dede文件夹下面article_description_main.php页面&#xff0c;找到“if($dsize>250) $dsize 250;”语句把250修改为500。 2、dede 文件下的 article_edit.php(这里5.7以后不用改)和 article_edit.php 修改 $description cn_substrR($…

dede栏目添加自定义字段方法

1、首先要进mysql 数据库里添加字段&#xff0c;命名好&#xff01;比如我下面添加了一个栏目备注字段&#xff0c;当然你字段可以自己新建&#xff0c;找到表dede_arctype&#xff08;这个是栏目模型的数据库表&#xff0c;这里面我添加的是栏目备注字段classremark&#xff0…

dede织梦data改为其他名字

data 改为其他名字时&#xff0c;我们相对应地也要改动相关的文件配置 1&#xff0c;比如我们把data改为lalala&#xff0c; 2&#xff0c;修改DEDEDATA目录的配置常量 找到系统目录下/include/common.inc.php文件&#xff0c;修改DEDEDATA常量为你的系统目录。 define(DEDEDAT…

dede 修改首页默认访问路径/dede修改安装目录

https://jingyan.baidu.com/article/d3b74d64f269121f77e60913.html dede下载后解压了&#xff0c;我们安装后&#xff0c;发现访问首页的路径不是我们想要的怎么办呢&#xff1f; 这种访问 是不是很烦。我只想要www.cfi.cn后就能访问我的网站。&#xff08;1&#xff09; 你…

dede织梦CMS安装页面出现dir的通用安装教程

dede织梦CMS安装页面出现dir 有些人买了的dede织梦CMS的二次开发的源码结果又遇见安装时出现dir&#xff0c;认为这套源码时不能安装的 &#xff0c;我今天给大家带来一个这样的教程吧&#xff01; 1.遇见安装页面出现dir 2.你这个肯定是已经安装过了的程序&#xff0c;把ins…

DEDE自动调用轮播图/幻灯片

备注&#xff1a; 以下示例是以自动调取轮播图为例&#xff0c;具体使用时&#xff1a;步骤不变&#xff0c;内容据实调整即可 一、创建&#xff1a; 1、新建模型&#xff1a; 2、在新模型下依次添加字段&#xff1a; 【本例字段&#xff1a;datu、xiaotu&#xff0c;分别给…

利用拉格朗日插值方法,分别选取n=2,4,6,8,10,对函数G(x)=1/(1+x2)进行插值,并与样条插值和原始结果进行对比分析。【数学实验】【matlab】

利用拉格朗日插值方法&#xff0c;分别选取n2,4,6,8,10&#xff0c;对函数G(x)1/(1x2)进行插值&#xff0c;并与样条插值和原始结果进行对比分析。 1.原始函数initFun.m的编写。 function fx initFun(x)%%原函数f(x)1/&#xff08;1x^2&#xff09;fx 1./(1x.^2);end 2.拉格…

用通知-等待机制优化锁等待问题

破坏占用且等待就可以避免死锁产生&#xff0c;以上一节中的循环等待代码来看&#xff1a; // 一次性申请转出账户和转入账户&#xff0c;直到成功 while(!actr.apply(this, target))&#xff1b;如果apply()操作耗时非常端&#xff0c;而且并发冲突量不大时&#xff0c;这个方…

Computer Vision_Matlab (3)

1 Box Masks Ia imread (rooster.jpg); Ib imread (elephant.png); Ic imread (boxes.pgm); Ia im2gray (Ia); Ib im2gray (Ib); Ic im2gray (Ic); Ia im2double (Ia); Ib im2double (Ib); Ic im2double (Ic); figure(100), imagesc (Ic), colorbar; box5ones(5,5).

通过KNN算法使用电脑摄像头识别人脸

主要通过knn算法生成训练集,然后通过调用电脑摄像头进行人脸识别,废话不多说, 直接上代码! import math import os import pickle import re import face_recognition import cv2 import numpy as np from PIL import Image, ImageDraw, ImageFont from face_recognition.face…

python非线性可分支持向量机模型(实现iris分类)

内容&#xff1a; 非线性可分支持向量机模型 分别使用线性核﹑多项式核与高斯核对lris 数据集的2/3数据训练支持向量机&#xff0c;剩余1/3数据进行测试&#xff0c;计算正确率。 分别使用线性核、多项式核与高斯核对lris数据集的2/3数据训练支持向量机&#xff0c;剩…

根据缠论选择盘整股票或者期货合约

盘整是一个比较难易判断的技术形态&#xff0c;最近基于jqdatasdk研究了通过缠论来判断盘整的方法&#xff0c;感觉效果还可以。特此贡献再次&#xff0c;以便和大家一起探讨关于盘整的思路。 # 导入函数库 from jqdatasdk import *# 第三方函数库 import numpy as np import…