> 文档中心 > Openharmony上如何编译与运行HelloWorld

Openharmony上如何编译与运行HelloWorld


Openharmony的第一个应用--Hello world

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

// FirstApp.cpp#include 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/HelloOpenHarmony2297 -rwxrwxrwx 1 root root 25300 2020-01-15 09:29 /system/bin/HelloOpenHarmony# ./system/bin/HelloOpenHarmonyHello 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.后续的文章难度会有所增加,欢迎大家留言反馈。