美文网首页
拆分静态库.a文件

拆分静态库.a文件

作者: 张俊凯 | 来源:发表于2018-03-12 20:04 被阅读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

相关文章

  • 拆分静态库.a文件

    问题描述:三方静态库和自己的工程共同包含同一个库,导致.o文件重复无法通过编译。解决思路:对三方静态库libx.a...

  • 静态库“.a”的拆分与合并

    查看 .a 文件所包含架构 按架构分离不同平台的静态库 在当前目录拆分静态库为目标文件.o 将目标文件.o合并为静...

  • lipo 命令

    1.拆分多架构支持的静态库 比如AipBase.framework,cd到库的文件夹 cd /Users/qiuz...

  • iOS 如何生成 .a 文件(静态库), 以及使用静态库时遇到问

    首先来谈谈为什么要使用静态库(.a 文件),使用静态库(.a 文件)有什么好处? 为什么使用静态库(.a)文件 总...

  • 合并静态库 和 拆分静态库

    合并http://blog.csdn.net/koocui/article/details/76265546拆分h...

  • day 41 Nginx数据库拆分

    拆分数据库扩展服务器拆分静态资源至独立服务器 一、拆分数据库 拆分数据库的原因:单台服务器运行LNMP架构,会导致...

  • 静态库

    静态库 静态库动态库简介 .a 静态库:被编译好的二进制文件 静态库:.a, .framework 动态库: .d...

  • ld: 4 duplicate symbols for arch

    如果不是静态库问题以及.m文件问题,那么就是你的创建的文件名字重复了! 静态库问题:移除静态库,重新添加 .m文件...

  • iOS 静态库(一)

    常见库文件格式 .a:静态库 .dylib:动态库 .framework:动、静态库 .xcframework:针...

  • IOS - 程序加载过程

    静态库 动态库 静态库:.a文件 静态库会被完整地复制到可执行文件中。被多次使用就有多份冗余拷贝 动态库:.dyl...

网友评论

      本文标题:拆分静态库.a文件

      本文链接:https://www.haomeiwen.com/subject/itsofftx.html