合并多个静态库为一个静态库或动态库

合并多个静态文件库为一个静态库或动态库

最近打包SDK,需要把多个*.so文件合并。通过google发现,*.so文件不能直接合并,因为其中已经没有重定向信息。但多个静态库文件是可以合并成一个库文件的。

ar命令的参数如下:

参数意义
-r将objfile文件插入静态库尾或者替换静态库中同名文件
-x从静态库文件中抽取文件objfile
-t打印静态库的成员文件列表
-d从静态库中删除文件objfile
-s重置静态库文件索引
-v显示详细信息
-c创建静态库文件
1、合并为静态库
[root@ggy lib]# ls
liblib1.a  liblib2.a  liblib3.a
[root@ggy lib]# ar -x liblib1.a 
[root@ggy lib]# ar -x liblib2.a 
[root@ggy lib]# ar -x liblib3.a 
[root@ggy lib]# ls
lib1.c.o  lib2.c.o  lib3.c.o  liblib1.a  liblib2.a  liblib3.a
[root@ggy lib]# ar -crs lib4.a *.o
[root@ggy lib]# ls
lib1.c.o  lib2.c.o  lib3.c.o  lib4.a  liblib1.a  liblib2.a  liblib3.a
[root@ggy lib]# ranlib lib4.a

.a 文件的结构和.tar文件就没有什么区别。 x 命令解出来, a 命令添加, t命令列表
假设A.a, B.a C.a 在/usr/local/lib目录下
mkdir /tmp/libABC
cd /tmp/libABC
ar x /usr/local/lib/A.a
ar x /usr/local/lib/B.a
ar x /usr/local/lib/C.a
ar crs libABC.a *.o
ranlib libABC.a

2、合并为动态库

上面已经把静态库的对象文件提取出来了,就用这些对象文件使用对应的编译工具继续生成动态库

linux-gnu-gcc -shared -o lib4.so *.o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值