同步操作将从 小熊派开源社区/BearPi-HM_Micro_small 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本示例将演示如何在开发板上运行第一个应用程序,输出“Hello World”。
确定目录结构。
开发者编写业务时,务必先在./applications/BearPi/BearPi-HM_Micro/samples路径下新建一个目录(或一套目录结构),用于存放业务源码文件。
例如:在app下新增业务my_first_app,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:
.
└── applications
└── BearPi
└── BearPi-HM_Micro
└── samples
│── my_first_app
│── hello_world.c
└── BUILD.gn
编写业务代码。
在hello_world.c中编写业务代码。
#include <stdio.h>
int main(int argc, char **argv)
{
printf("\n************************************************\n");
printf("\n\t\tHello BearPi!\n");
printf("\n************************************************\n\n");
return 0;
}
编写将构建业务代码的BUILD.gn文件。
如步骤1所述,BUILD.gn文件由三部分内容(目标、源文件、头文件路径)构成,需由开发者完成填写。以my_first_app为例,需要创建./applications/BearPi/BearPi-HM_Micro/samples/my_first_app/BUILD.gn,并完如下配置。
import("//build/lite/config/component/lite_component.gni")
executable("hello_world_lib") {
output_name = "hello_world"
sources = [ "hello_world.c" ]
include_dirs = []
defines = []
cflags_c = []
ldflags = []
}
lite_component("my_app") {
features = [
":hello_world_lib",
]
}
首先导入 gni 组件,将源码hello_world.c编译成hello_world_lib库文件
然后将hello_world_lib打包成 lite_component,命名为my_app组件。
输出的可执行文件名称由output_name定义为hello_world
添加新组件
修改文件build/lite/components/applications.json,添加组件my_sample的配置,如下所示为applications.json文件片段,"##start##"和"##end##"之间为新增配置("##start##"和"##end##"仅用来标识位置,添加完配置后删除这两行):
{
"components": [
##start##
{
"component": "my_sample",
"description": "my samples",
"optional": "true",
"dirs": [
"applications/BearPi/BearPi-HM_Micro/samples/my_first_app"
],
"targets": [
"//applications/BearPi/BearPi-HM_Micro/samples/my_first_app:my_app"
],
"rom": "",
"ram": "",
"output": [],
"adapted_kernel": [ "liteos_a" ],
"features": [],
"deps": {
"components": [],
"third_party": [ ]
}
},
##end##
{
"component": "bearpi_sample_app",
"description": "bearpi_hm_micro samples.",
"optional": "true",
"dirs": [
"applications/BearPi/BearPi-HM_Micro/samples/launcher",
"applications/BearPi/BearPi-HM_Micro/samples/setting"
],
"targets": [
"//applications/BearPi/BearPi-HM_Micro/samples/launcher:launcher_hap",
"//applications/BearPi/BearPi-HM_Micro/samples/setting:setting_hap"
],
"rom": "",
"ram": "",
"output": [
"launcher.so",
"setting.so"
],
"adapted_kernel": [ "liteos_a","linux" ],
"features": [],
"deps": {
"third_party": [
"bounds_checking_function",
"wpa_supplicant"
],
"kernel_special": {},
"board_special": {},
"components": [
"aafwk_lite",
"appexecfwk_lite",
"surface",
"ui",
"graphic_utils",
"kv_store",
"syspara_lite",
"permission",
"ipc_lite",
"samgr_lite",
"utils_base"
]
}
},
修改单板配置文件
修改文件vendor/bearpi/bearpi_hm_micro/config.json,新增my_sample组件的条目,如下所示代码片段为applications子系统配置,"##start##"和"##end##"之间为新增条目("##start##"和"##end##"仅用来标识位置,添加完配置后删除这两行):
{
"subsystem": "applications",
"components": [
{ "component": "bearpi_sample_app", "features":[] },
##start##
{ "component": "my_sample", "features":[] },
##end##
{ "component": "bearpi_screensaver_app", "features":[] }
]
},
示例代码编译、烧录后,在命令行输入指令“./bin/hello_world”执行写入的demo程序,会显示如下结果:
一个.c文件想要编译进系统可以总结为以下流程:
在此希望开发者能仔细琢磨并掌握整个流程,有利于学习Openharmomy的编译框架,以及为后续自主开发应用打下基础
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。