如何把代码生成静态库文件

发布于 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 条评论

发布
问题