如何把代碼生成靜態庫文件

發布於 2025-12-29 14:22:54

在開發過程中,如果遇到需要把自己的代碼編譯成靜態庫文件提供給別人使用,可以參考以下方法。編譯使用的是msys或者虛擬機linux,使用make命令編譯,推薦使用msys工具,在W800的官網下載,解壓後可以直接使用,免安裝,簡單方便。

以一個簡單的例子說明。假如在app目錄下應用代碼結構是這樣的,需要生成一個庫文件。

a5d49bb0142d982b27e77ad5d7f1af12.png

d60ea0a8c00b53a8f0779220d96d23ac.png

db7deba659878ffa218df8e8972994f1.png

1e694e3e537aeef08a0f9bbe5d89df90.png

複制app目錄下的Makefile文件分別到所有包含.c文件的目錄下,然後修改Makefile文件中的TOP_DIR路徑和需要生成的GEN_LIBS庫文件的名稱,讓每一個包含.c文件的文件夾下都生成一個庫文件,同時父文件夾的庫文件還要包含子文件夾庫文件,最終成為一個庫文件。

b文件夾下的Makefile文件

54413f5e6fc3350835254886c2268281.png

c文件夾下的Makefile文件

15f884fba546fbf4aabbee080b8de2c8.png

a文件夾下的Makefile文件

58324874e91085bd18d597f53102ca45.png

這裡TOP_DIR指向的是W80X_SDK_V1.0.10這個文件夾,所以修改路徑要表明Makefile所在文件夾與TOP_DIR的層級關系。總共生成三個庫文件,lib_a.a、lib_b.a、lib_c.a,lib_a.a包含lib_b.a和lib_c.a。在msys中進入切換路徑到W80X_SDK_V1.0.10文件夾,然後執行make命令,等待編譯完成。

69df509b002c77f7dd86a6f7017c82f8.png

在W80X_SDK_v1.00.10binbuildw800lib目錄下,可以看到生成了.a文件。

2091ff7c56fe683bbcb29bc132e66d04.png

複制lib_a.a和a.h到一個新的SDK,來驗證編譯是否正確。把lib_a.a複制到lib/w800目錄下,a.h複制到app目錄下,在main.c中調用test_a接口,在SDK目錄下的Makefile文件夾中引用lib_a.a。然後同樣在msys中編譯生成固件。

463a9230a4fc8d8b7318291492ffc770.png

909fac08242ffeed38c4f7a901756e88.png

下載運行固件,可以看到輸出log信息與代碼一致。

2e7f429c2a2a35c51890d1c7c0259eee.png

這樣就可以把lib_a.a和a.h提供給使用者了。這裡舉例了代碼目錄是兩層a和b/c,如果自己的代碼目錄只有一層或者大於兩層,根據需要修改就可以了。

0 條評論

發布
問題