OpenHarmony编写命令行软件HelloWorld

文章目录

1. 目的

编译命令行工具 HelloWorld,测试编译环境及项目配置
开发硬件环境:树莓派 3B+

2. 官方开发文档

根据开发硬件,选择文档标准系统编译构建指导(在这费了半天劲,找错了相关文档)

2.1. 基本概念

  • 平台
    开发板和内核的组合,不同平台支持的子系统和组件不同。平台基于硬件和内核,在项目中,~/ohos/openharmony/vendor/rpi3 目录下有 rpi 平台下相关的配置;软件的自定义的配置可以通过~/ohos/openharmony/device/rpi3 定制
  • 子系统
    OpenHarmony 整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或组件。子系统是一个逻辑概念,它具体由对应的组件构成。我们这次的实现方式为在~/ohos/openharmony/device/rpi3 子系统下增加组件
  • 组件
    对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。本次创建名为 HelloWorld 的组件
  • gn
    Generate ninja 的缩写,用于产生 ninja 文件。
  • ninja
    ninja 是一个专注于速度的小型构建系统。

3. 源码实现

3.1. 工程目录

相对于~/ohos/openharmony 目录

device
├── rpi3
│   ├── rpi3
│   │   ├── hbis
│   │   │   ├── BUILD.gn
│   │   │   ├── src
│   │   │      │── main.c
│   │   ├── BUILD.gn

3.2. 源代码

  • device/rpi3/rpi3/hbis/src/main.c
#include <stdio.h>

int main(int argc, char **argv)
{
    printf("\n************************************************\n");
    printf("\n\t\tHello HBIS!\n");
    printf("\n************************************************\n\n");

    return 0;
}
  • device/rpi3/rpi3/hbis/BUILD.gn
import("//build/ohos.gni")

group("hello-OHOS") {
  deps = [
    ":helloworld",
  ]
}
ohos_executable("helloworld") {
  sources = [ "src/main.c" ]
  output_name = "helloworld"
  install_enable = true
  part_name = "rpi3_products"
}
  • device/rpi3/rpi3/BUILD.gn
import("//build/ohos.gni")

print("rpi3_group in")
group("rpi3_group") {
  deps = [
    "hbis:hello-OHOS",
  ]
}
...

}

3.3. 源码见

OpenHarmony 树莓派 3B+ helloworld程序

4. 编译与烧录

4.1. 编译指令

python3 build-rpi3.py build

4.2. 镜像烧录

固件位置生成位置 out/ohos-arm-release/packages/phone/images/firmware.img
使用 Win32DiskImager 进行烧录

4.3. 应用测试

连接 rpi,输入指令:helloworld,即可打印输出

上一篇:SpringBoot配置Redis多集群数据源


下一篇:Jedis、RedisTemplate、StringRedisTemplate之间的比较