linux和MAC下静态库.a文件合并

本文介绍了在MACOS环境下,如何通过ar命令将多个.a文件解压为.o文件,并进一步合并成一个新的.a文件的过程。同时,还提供了使用ranlib命令更新合并后的库文件符号表的方法。

这两天开发群了讨论了一个文体,如何合并众多的.a文件。

有人给了建议,使用ar 解.a,生成.o。然后合并所有的.o文件。

我在MAC OS下尝试了一下。

正好赶上编译了ffmpeg的IOS armv7版本,生成了armv7/lib/

5235392 Sep 17 15:50 libavcodec.a
1017032 Sep 17 15:50 libavformat.a
 183528 Sep 17 15:50 libavutil.a
 232536 Sep 17 15:50 libswscale.a
    204 Sep 17 15:50 pkgconfig

使用ar命令,将这四个.a文件都解出.o文件

ar x libavcodec.a
ar x libavformat.a
ar x libavutil.a
ar x libswscale.a

然后ls 就可以看出,生成了很多.o文件。
下一步来合并.o文件,命令如下

ar cru libffmpeg.a *.o

别忘了还有ranlib命令,更新库的符号表

 ranlib libffmpeg.a 

最后,看一下使用ranlib后,文件MD5确实不一样了。

mikumatoMac-mini:lib gyc$ ll libffmpeg.a 
-rw-r--r--  1 gyc  staff  6070496 Sep 18 16:02 libffmpeg.a
mikumatoMac-mini:lib gyc$ md5 libffmpeg.a 
MD5 (libffmpeg.a) = b988179f58e87888fba85fb5038cb9a2
mikumatoMac-mini:lib gyc$ ranlib libffmpeg.a 
ranlib: file: libffmpeg.a(os_support.o) has no symbols
mikumatoMac-mini:lib gyc$ md5 libffmpeg.a 
MD5 (libffmpeg.a) = d08086ad81679287c3e27af69f354607
mikumatoMac-mini:lib gyc$ ll libffmpeg.a 
-rw-r--r--  1 gyc  staff  6070496 Sep 18 16:05 libffmpeg.a

提示:

1.

--enable-pic  build position-independent code

 

 

windows下dll或者dll和exe,也有合并的方法,ILMerge

http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx

但是,我尝试过,并没有得到较好的结果。原因有待以后查明。

 

 

 

转载于:https://www.cnblogs.com/zzugyl/p/3328628.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值