美文网首页
拆分静态库.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文件

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