在开发过程中,如果遇到需要把自己的代码编译成静态库文件提供给别人使用,可以参考以下方法。编译使用的是msys或者虚拟机linux,使用make命令编译,推荐使用msys工具,在W800的官网下载,解压后可以直接使用,免安装,简单方便。
以一个简单的例子说明。假如在app目录下应用代码结构是这样的,需要生成一个库文件。




复制app目录下的Makefile文件分别到所有包含.c文件的目录下,然后修改Makefile文件中的TOP_DIR路径和需要生成的GEN_LIBS库文件的名称,让每一个包含.c文件的文件夹下都生成一个库文件,同时父文件夹的库文件还要包含子文件夹库文件,最终成为一个库文件。
b文件夹下的Makefile文件

c文件夹下的Makefile文件

a文件夹下的Makefile文件

这里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命令,等待编译完成。

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

复制lib_a.a和a.h到一个新的SDK,来验证编译是否正确。把lib_a.a复制到lib/w800目录下,a.h复制到app目录下,在main.c中调用test_a接口,在SDK目录下的Makefile文件夹中引用lib_a.a。然后同样在msys中编译生成固件。


下载运行固件,可以看到输出log信息与代码一致。

这样就可以把lib_a.a和a.h提供给使用者了。这里举例了代码目录是两层a和b/c,如果自己的代码目录只有一层或者大于两层,根据需要修改就可以了。