其他分享
首页 > 其他分享> > 鸿蒙小熊派*季 -烧入代码,编写BUIL.gn文件

鸿蒙小熊派*季 -烧入代码,编写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