1.不用連接web
假若有兩個.a libx.a 裏面須要調用liby.a的接口函數
那麼,
將代碼編譯生成libx.a的時候,不須要liby.a的,只須要y裏面的頭文件便可
可是,當給調用者使用libx.a的時候,必須都加上去,也就是-lx -ly, 不可以只有-lx
(並且注意順序,-ly -lx都不行)編程
2.合併兩個靜態庫函數
若是你非要將兩個庫連接成一個庫,能夠合併這兩個庫變成一個新庫。spa
有一個辦法 就是 把第二個.a文件ar -x 編程.o 文件
而後把第一個.a文件也ar -x 編程.o文件
而後ar -c 把全部的.o文件打包起來code
將兩個庫合併爲一個,其實就是解開,得到全部的.o,而後再打包,這種方法固然也適合多個。orm
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更新:ci
其實搞複雜了,最簡單的仍是解壓出各類.o,而後再合併:it
1 |
ar x <library name 1> |
2 |
ar x <library name 2> |
3 |
...... |
4 |
ar cs <new library name> <list each extracted object file > |