zoukankan      html  css  js  c++  java
  • 如何解决项目中.a文件中的.o冲突

    项目中使用了yuemengsdk.a  现又加入了百度 libbaiduNaviSDK.a 有了冲突

    我们需要把.a文件中的.o文件删除

    第一步

    先将项目备份..万一没玩好..去哪说理~~

    第二步

    在桌面新建文件夹 把需要的.a文件放在新建的文件夹中

    cd到该目录下查看该文件的cup架构命令行如下

    fenghedeMacBook-Pro:合并 fenghe$ lipo -info libbaiduNaviSDK.a
    Architectures in the fat file: libbaiduNaviSDK.a are: i386 armv7 x86_64 arm64 

    我们看到支持4种 i386 armv7 x86_64 arm64 在这里我们介绍下

    因为该.a中包含着4种架构,所以我们要分别对他们读取并拆分

    执行命令行对.a文件进行arm64架构读取

    lipo libbaiduNaviSDK.a -thin arm64 -output libbaiduNaviSDK_arm64.a

    然后用同样的方法对其他三种架构进行读取
    读取完成后的效果如下 

    因为我们要对不同类型的架构进行拆分.拆分后会有很多文件,所以我们将每种架构新建个文件夹放入,防止拆分后混淆

    然后使用命令行分别对不同架构进行拆分并删除其中重复的.o文件

    cd 到arm64文件夹目录下 执行

    ar -x libbaiduNaviSDK_arm64.a

    分别在4个文件夹目录下执行以上命令行

    执行完毕就代表拆分完毕.然后搜索一下报错的.o文件并删除

    紧接着合并文件(此时之前根目录下的libbaiduNaviSDK.a文件就可以删除了,因为合并后会生成一个新的文件.)

    在arm64文件目录下执行

    fenghedeMacBook-Pro:arm64 fenghe$ libtool -static -o ../libbaiduNaviSDK_arm64.a *.o

    执行完毕后会在根目录下生成libbaiduNaviSDK_arm64.a文件,这就是合并完成的文件.  还需要在其他三个文件夹下执行对应的上述命令行  执行完毕效果如下

    最后将所有架构类型的.a进行终极合并

    cd 到根目录下 执行

    fenghedeMacBook-Pro:合并 fenghe$ lipo -create -output libbaiduNaviSDK.a libbaiduNaviSDK_arm64.a libbaiduNaviSDK_armv7.a libbaiduNaviSDK_i386.a libbaiduNaviSDK_x86_64.a

    执行完毕后会在根目录下生成新的.a文件.将其替换掉项目中的即可

    欢迎大家加入我的iOS(OC/swift/flutter)技术群 不闲聊只技术交流 闲聊勿扰了

    201708926

  • 相关阅读:
    CentOS6.9依赖包快速安装指南
    CentOS 6.5安装部署Zabbix 3.05指南
    Nginx最佳安装与优化
    Linux Bonding最优配置
    macOS下用命令行发邮件
    Linux iperf网络性能测试
    MTR网络诊断自动脚本实例
    nmon监控linux资源使用情况
    思科HSRP配置实例
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/baxiu/p/11276959.html
Copyright © 2011-2022 走看看