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

  • 相关阅读:
    手把手教你利用create-nuxt-app脚手架创建NuxtJS应用
    初识NuxtJS
    webpack打包Vue应用程序流程
    用选择器代替表格列的筛选功能
    Element-UI
    Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
    Sparse Principal Component Analysis via Rotation and Truncation
    Generalized Power Method for Sparse Principal Component Analysis
    Sparse Principal Component Analysis via Regularized Low Rank Matrix Approximation(Adjusted Variance)
    Truncated Power Method for Sparse Eigenvalue Problems
  • 原文地址:https://www.cnblogs.com/baxiu/p/11276959.html
Copyright © 2011-2022 走看看