linux一個靜態庫(.a)如何連接另一個靜態庫(.a)

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>
相關文章
相關標籤/搜索