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>


转载于:https://my.oschina.net/u/1024573/blog/410576

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐