鴻蒙小熊派*季 -燒入代碼,編寫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