鸿蒙小熊派*季 -烧入代码,编写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")
还有点不懂  好像就是生成一个代码段,然后调用函数指向该代码段,进行编译。。。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM