6

Openharmony轻量设备开发—润和智能家居套件-编译构建系统的使用

 1 year ago
source link: https://www.51cto.com/article/762841.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
04dc633986afa23034d958681330268412739d.png

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

在上一篇帖子中,我们学习了Openharmony轻量系统的编译构建https://ost.51cto.com/posts/25293,其中包括了子系统,组件的核心理念、编译构建系统的配置规则等等。下面我们来学习一下编译构建系统的使用。

案例:新增组件

1、根据功能准备开发套件

笔者使用的是润和智能家居开发套件,连接主板和核心板。

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

2、编写/合入组件源码

编写组件源码:applications\sample\component_demo\demo.c。

1.在applications/sample下新建component_demo文件夹。

2.在component_demo文件夹下新建文件demo.c。

3.编写如下代码:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

#include <stdio.h>
 #include "ohos_init.h"
 void entry(void)
 {
   printf("I am a component.\r\n");
 }
 SYS_RUN(entry);
  • #include “ohos_init.h” 是Openharmony的特有头文件,它在utils\native\lite\include\ohos_init.h中,在开发中,它提供了一系列入口,用于初始化服务(services)和功能(features)。
  • SYS_RUN(entry) 的意思是让entry函数以“优先级2”在系统启动过程中的“阶段4.system startup”阶段执行。

3、编写组件编译脚本

编写组件编译脚本:在applications\sample\component_demo下新建BUILD.gn文件,编写如下代码。

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

static_library("TestComponent"){

   sources = [ "demo.c" ]

   include_dirs = [
       "//utils/native/lite/include",
   ]
}
  • static_library为静态库,“TestComponent"是库名称,最终被编译为"libTestComponent.a”。
  • sources里面存放的是源文件。
  • include_dirs里存放的是include目录,包括"ohos_init.h"等头文件。

单独编译目标

在组件源码和编译脚本完成之后,我们可以尝试单独编译目标。

首先我们来看一下hb的用法:

打开虚拟机,进去Openharmony的源码目录,鼠标右键选择在终端中打开,输入如下命令:

hb build -h

显示如下:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

hb build -T 路径:目标

在上面的例子中:
语法为:

hb build -f -T //applications/sample/component_demo:TestComponent

注意:-T是要大写的。

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

可以看到,编译成功完成。

4、添加组件定义

作为一个组件,必须要注册到一个子系统中,Openharmony才会意识到你的存在。
具体内容可以看上一篇帖子:https://ost.51cto.com/posts/25293找到build\lite\components\applications.json

添加如下定义:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

{
      "component":"TestComponent",
      "description":"A test component",
      "optional":"true",
      "dirs":[
        "applications/sample/component_demo"
      ],
      "targets":[
        "//applications/sample/component_demo:TestComponent"
      ],
      "adapted_kernel":["liteos_m"]
    },

添加的内容解释如下:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

5、将组件配置到产品

找到vendor\hisilicon\hispark_pegasus\config.json,添加如下配置:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

接着我们再来单独编译组件,这与前面编译目标的效果一样(目标就是一个组件),这样会快捷。

hb build 组件名称

在终端中输入如下命令

hb build -f TestComponent
【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

编译结果如上。

这样就不用像之前那样想要编译一个组件,还需要它的路径,会更快捷方便。

6、编译产品

在轻量系统中,单独编译的目标或者是组件是不能够独立运行的,这种编译方式适合发现编译错误,但是要烧录运行的话,我们要进行固件的全量编译(hb build -f)。

接下来我们进行全量编译:
执行以下命令:

hb build -f

编译成功结果如下:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

7、烧录固件

下面就到了我们熟悉的地方,烧录固件,笔者这里采用的是Hiburn烧录工具,相关细节可以看我这篇贴子:https://ost.51cto.com/posts/25292下面给出烧录成功之后的样子:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

烧录完成后,点击disconnect,然后关闭Hiburn烧录工具。

运行我们采用的是MobaXterm串口终端工具。相关细节可以看我这篇帖子:https://ost.51cto.com/posts/25292下面给出运行结果:

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

可以看到,成功的编译运行了刚刚的component_demo组件.总结:新增组件的案例就是按照这1-8个步骤来完成。再次附上子系统的构建模型,希望大家能有更深的理解。

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

【Openharmony轻量设备开发】润和智能家居套件-编译构建系统的使用-开源基础软件社区

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK