1.不用链接
假如有两个.a libx.a 里面需要调用liby.a的接口函数
那么,
将代码编译生成libx.a的时候,不需要liby.a的,只需要y里面的头文件即可
但是,当给调用者使用libx.a的时候,必须都加上去,也就是-lx -ly, 不能够只有-lx
(而且注意顺序,-ly -lx都不行)
2.合并两个静态库
如果你非要将两个库链接成一个库,可以合并这两个库变成一个新库。
有一个办法 就是 把第二个.a文件ar -x 编程.o 文件
然后把第一个.a文件也ar -x 编程.o文件
然后ar -c 把所有的.o文件打包起来
将两个库合并为一个,其实就是解开,获得所有的.o,然后再打包,这种方法当然也适合多个。
1 | ar -x libabc.a |
2 | ar -x libxyz.a |
3 | ar -c libaz.a *.o |
如何向一个.a中追加.o
1 | ar rcs libabc.a *.o |
2012.3.1更新:
其实搞复杂了,最简单的还是解压出各种.o,然后再合并:
1 | ar x <library name 1> |
2 | ar x <library name 2> |
3 | ...... |
4 | ar cs <new library name> <list each extracted object file > |