首页 » 嵌入式笔记 » 正文

linux把多个静态库合并为一个

最近打算把项目里多个模块分开写,每个模块生成一个库,这样在可以在主项目里直接调用,方便项目的管理.
但理想丰满但现实是残酷的,先不说模块的划分难,因为模块里都要调用到一些库,然而库再生成库时出大事了.因为生成的库并没有把它自已调用的库编译进来,这样还是得在主项目里添加一堆库路径,一堆.a引用.又是一夜的google资料,并没发现有好的方面(功力还是太弱),不过找到了一个折中的办法,那就是合并库!

我的项目中包含了海思很多库(七八个静态库),每次添加到项目里的时候都要注意顺序问题.所以先把它们合并为一个.a文件.
1:分别解压静态库文件,解压出一堆.o文件
arm-gccxxx-ar xx1.a
arm-gccxxx-ar xx2.a
然后
arm-gccxxx-ar new.a acu *.o
arm-gccxxx-ranlib new.a
这样N个.a文件就变成一个了
但还是需要在主项目里加一堆头文件…

2016.11.18更新方案:
将多个档案合并为一个共享库:gcc -shared -o c.so -Wl,–whole-archive a.a b.a

本文共 1 个回复

  • cg865 2016/11/29 14:56

    其实把静态库重新编为动态库即可

发表评论