IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【OpenHarmony】测试代码编译执行流程 -> 正文阅读

[C++知识库]【OpenHarmony】测试代码编译执行流程

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

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

一、编译目录结构

首先先看一下要修改添加的文件架构

./applications/BearPi/BearPi-HM_Micro/samples
├── helloworld
    ├── BUILD.gn
    ├── include
    │   └── helloworld.h
    └── src
        └── helloworld.c
./build
├── lite
    ├── components
        └──applications.json
./vendor
└── bearpi
    └── bearpi_hm_micro
        └── config.json

一个用户态的业务代码设计到的文件框架基本如上面所示,下面进入代码编写

二、编写测试代码

首先编译业务测试代码,业务代码目录如下:

./applications/BearPi/BearPi-HM_Micro/samples
├── helloworld
    ├── BUILD.gn
    ├── include
    │   └── helloworld.h
    └── src
        └── helloworld.c

include 用于存放头文件,src 则存放源文件,BUILD.gn 则是编译组织文件,用于编译当前目录下面的工程文件

首先编写 .h 文件,声明一个函数 HelloPrint,同时声明编译器使用 c 编译

#ifndef HELLOWORLD_H
#define HELLOWORLD_H

#ifdef __cplusplus
#if __cplusplus
    extern "C" {
#endif
#endif

void HelloPrint();

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

再编写 .c 源文件,编写函数内容,显示 helloworld

#include <stdio.h>
#include "helloworld.h"

int main(int argc, char **argv)
{
    HelloPrint();
    return 0;
}

void HelloPrint()
{
    printf("\n************************************************\n");
    printf("\n\t\tHello World!\n");
    printf("\n************************************************\n");
    printf("OpenHarmony Code Test! JeckXu - Top嵌入式");
}

三、编写构建脚本

然后编写编译脚本文件 BUILD.gn

先导入编译组件,源码hello_world.c 编译成 hello_world_lib 模块文件:

# 导入编译组件
import("//build/lite/config/component/lite_component.gni")

然后编写可执行模块的详细信息,

# 可执行模块
executable("hello_world_lib") { 
  output_name = "helloworld"
  sources = [ "src/helloworld.c" ]
  include_dirs = ["include"]
  defines = []
  cflags_c = []
  ldflags = []
}

最后由模块编译生成的 lib 模块生成 my_app 组件:

lite_component("my_app") {
    features = [
       ":hello_world_lib",
    ]
}

四、添加组件

编译脚本将编译生成的文件和组件关联,下面我们进入到

./build
├── lite
    ├── components
        └──applications.json

进一步修改组件信息,在如下位置插入新的组件信息:

20220307112926

新组件信息如下:

    {
        "component": "helloworld_app",
        "description": "helloworld samples",
        "optional": "true",
        "dirs": [
        "applications/BearPi/BearPi-HM_Micro/samples/helloworld"
        ],
        "targets": [
        "//applications/BearPi/BearPi-HM_Micro/samples/helloworld:my_app"
        ],
        "rom": "",
        "ram": "",
        "output": [],
        "adapted_kernel": [ "liteos_a" ],
        "features": [],
        "deps": {
        "components": [],
        "third_party": [ ]
        }
    },

不同组件主要就是依赖和名称不同

五、修改开发板配置文件

最后就是修改开发板的配置文件,添加对应的hello部件:

./vendor
└── bearpi
    └── bearpi_hm_micro
        └── config.json

在应用子系统下添加组件

20220307114018

组件代码如下:

 { "component": "helloworld_app", "features":[] },

添加完如下:

{
    "subsystem": "applications",
    "components": [
        { "component": "helloworld_app", "features":[] },
        { "component": "bearpi_sample_app", "features":[] },
        { "component": "bearpi_screensaver_app", "features":[] },
        { "component": "bearpi_sample_communication", "features":[] }
    ]
}

六、运行结果

到此一个应用程序组件添加完成,下面就是编译烧录,可以参考我之前的文章

【OpenHarmony】开发环境搭建

【OpenHarmony】文件下载到小熊派

编译指令

hb build -t notest --tee -f

这里我在腾讯云服务器上编译的,编译完成如下

20220307141055

拷贝结果文件,然后下载程序,下载后启动系统,在串口命令行执行业务代码:

./bin/hello_world

执行结果如下,执行成功

20220307142910

总结一下用户代码的编译流程,编写 BUILD.gn 编译代码生成执行文件,然后根据执行文件生成对应模块,编写组件关联调用模块

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:10:02  更:2022-03-08 22:10:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:46:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码