拆分静态库.a文件

2018-03-12  本文已影响22人  张俊凯

问题描述:三方静态库和自己的工程共同包含同一个库,导致.o文件重复无法通过编译。
解决思路:对三方静态库libx.a文件进行拆分,剔除重复文件后重新链接编译,注意有平台区分。
命令如下:

 lipo -info libx.a  
结果: Architectures in the fat file: libx.a are: armv7 i386 x86_64 arm64 

拆分为四个平台的包

lipo libx.a -thin armv7   -output libx-armv7.a
lipo libx.a -thin i386    -output libx-i386.a
lipo libx.a -thin x86_64  -output libx-x86_64.a
lipo libx.a -thin arm64   -output libx-arm64.a

解压每个平台的包,看到.o文件

ar -x libx-armv7.a
ar -x libx-i386.a
ar -x libx-x86_64.a
ar -x libx-arm64.a

清理后依次重新链接

libtool -static -o ../libx-armv7.a *.o
libtool -static -o ../libx-i386.a *.o
libtool -static -o ../libx-x86_64.a *.o
libtool -static -o ../libx-arm64.a *.o

最后一步,四个平台的包组合回去最终一个包

lipo -create -output libx.a libx-armv7.a libx-i386.a libx-x86_64.a libx-arm64.a

完成!

参考链接:
1.http://www.cocoachina.com/bbs/read.php?tid-188289-page-1.html
2.https://stackoverflow.com/questions/5352113/how-do-i-turn-a-fat-library-into-a-non-fat-library

上一篇下一篇

猜你喜欢

热点阅读