鸿蒙小熊派*季 -烧入代码,编写BUIL.gn文件
作者:互联网
①、APP_FEATURE_INIT()这个函数的参数是传入一个函数的地址,作用是将该函数链接到指定的代码段,具体的代码段我们留到下面。
②
1.2添加编译构建文件BUILD.gn
BUILD.gn就相当于Makefile,不过它的编译速度要比Makefile快。BUILD.gn文件在C文件同级目录下。
下面是BUILD.gn文件内容:
static_library("helloword"){
sources = [
"./helloword.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
①、static_library()中的参数是编译生成的文件名;
②、sources是C文件路径;
③、include_dirs是C文件用到的头文件的路径,"//utils/native/lite/include"是ohos_init.h头文件的路径;
注意:在BUILD.gn文件中不能用tab进行缩进,只能用空格,不让编译会报错。
③
1.3编写applications下的BUILD.gn
在features里添加C文件编译好的文件路径:
my_app/D1_my_helloword:helloword
冒号之前是编译好文件的路径,冒号之后是编译好的文件,该文件名一定要与最内层的BUILD.gn编译好的文件名相同。
1.4
鸿蒙编译环境,代码如何运行起来
1、没有main.c文件
2、从 vender->hisi->hisi3861->app->wifiiot_app->app_main.c-》app_main() 作为程序主入口
3、打开串口调试工具 MobaXterm 查看日志信息
sdk版本号:
4、查看一下 HOS_SystemInit()函数里是啥
按住ctrl 鼠标左击函数名,可以显示所有包含该函数的文件,选择 system_init.c下查看
void HOS_SystemInit(void) { MODULE_INIT(bsp); MODULE_INIT(device); MODULE_INIT(core); SYS_INIT(service); //以烧入helloworld函数为例子;如果屏蔽这句话,就只会显示到wifi init success 后面的helloworld不会显示 SYS_INIT(feature); MODULE_INIT(run); SAMGR_Bootstrap(); }
(22条消息) HarmonyOS编译框架介绍_懿傕的博客-CSDN博客_harmonyos 编译
反推一下:
①调用APP_FEATURE_INIT(Hello_World); //调用void Hello_World(void) ② #define APP_FEATURE_INIT(func) LAYER_INITCALL_DEF(func, app_feature, "app.feature") APP_FEATURE_INIT(func); 是个宏定义 调用 LAYER_INITCALL_DEF(func, app_feature, "app.feature") 还有点不懂 好像就是生成一个代码段,然后调用函数指向该代码段,进行编译。。。
标签:文件,app,INIT,编译,烧入,BUILD,BUIL,gn 来源: https://www.cnblogs.com/hhy-2216/p/16069917.html