美文网首页
.a文件分离合并(解决两个.a文件有相同的文件冲突)

.a文件分离合并(解决两个.a文件有相同的文件冲突)

作者: zhaihongxia | 来源:发表于2017-11-09 16:21 被阅读0次

在移动开发过程中,如果一个工程需要接入很多第三方sdk ,那么一个工程可能有好多个.a库。这么多个.a文件,能不能合成一个库,而又能同时实现多个功能呢?

这里,就用支付宝sdk和微信sdk用作试验。支付宝.a库:libcrypto.a libssl.a 微信.a库 : libWeChatSDK.a

1.打开Launchpad->其他->终端;

2.从工程拖出上述三个.a文件,拖拽到桌面上,此时,它们的路径分别是:

/Users/ssiwo02/Desktop/libcrypto.a
/Users/ssiwo02/Desktop/libssl.a
/Users/ssiwo02/Desktop/libWeChatSDK.a
3.使用终端,查看上述三个.a库所支持的构架(i386,x86_64,armv7,armv7s,arm64,至于这些构架分别代表什么,可以看博主关于iOS 架构的博文,或自行百度)
在终端输入命令: lipo -info /Users/ssiwo02/Desktop/libcrypto.a

显示: Architectures in the fat file: /Users/ssiwo02/Desktop/libcrypto.a are: armv7 armv7s i386 x86_64 arm64

同理 分别查看libssl.a libWeChatSDK.a 支持的架构信息。

4.使用终端,分别分离出上述三个.a文件单独支持的架构版本,比如上述libcrypto.a支持armv7 armv7s i386 x86_64 arm64,那么就需要分离出单独支持armv7 armv7s i386 x86_64 arm64的libcrypto.a

在终端输入命令: lipo /Users/ssiwo02/Desktop/libcrypto.a -thin armv7 -output /Users/ssiwo02/Desktop/libcrypto_armv7.a

然后桌面上就出现一个单独支持armv7架构的.a库,命名为 libcrypto_armv7.a

同理分别分理libssl.a libWeChatSDK.a 所支持的全部架构版本。

5.使用终端,分离出.a库的目标文件(.o)

在进行分离之前,因为.a库分离出来的目标文件.o文件很多,所以,最好在桌面上建立五个文件夹,命名为A,B,C,D,E,F 分别用来存储分离出来的支持armv7 armv7s i386 x86_64 arm64的.o文件。并进入当前的文件路径

在终端输入命令:cd /Users/ssiwo02/Desktop/A/

         ar -x /Users/ssiwo02/Desktop/libcrypto_armv7.a
         cd /Users/ssiwo02/Desktop/B/   (每次分离前,一定要更改当前的路径,否则分离出来的.o 文件都会在/Users/ssiwo02/Desktop/A/文件夹下)
         ar -x /Users/ssiwo02/Desktop/libcrypto_armv7s.a

这步操作比较多,容易出错。
6.对支持同个架构的.o文件,进行合并成静态库。
在终端输入命令: libtool -static -o /Users/ssiwo02/Desktop/A/libXXXX-armv7.a *.o
执行完毕,就会在/Users/ssiwo02/Desktop/A/路径中,生成一个linXXXXX-armv7.a 的文件。
同理分别对B,C,D,E,F的文件夹中的.o文件进行合并,并且命名。
如果不出错,就会得到5个.a文件:libXXXXX-armv7.a , libXXXXX-armv7s.a , libXXXXX-i386.a , libXXXXX-x86_64.a , libXXXXX-arm64.a
7.合成支持全部架构的通用静态库
在终端输入命令: lipo -create /Users/ssiwo02/Desktop/A/libXXXXX-armv7.a /Users/ssiwo02/Desktop/B/libXXXXXX-armv7s.a /Users/ssiwo02/Desktop/C/libXXXXXX-i386.a /Users/ssiwo02/Desktop/D/libXXXXXX-x86_64.a /Users/ssiwo02/Desktop/E/libXXXXXX- arm64.a -output /Users/ssiwo02/Desktop/libXXXXX.a
执行完毕,就会在桌面上生成一个命名为libXXXXX.a,这个libXXXXXX.a就是我们所需要的.a库。

相关文章

  • .a文件分离合并(解决两个.a文件有相同的文件冲突)

    在移动开发过程中,如果一个工程需要接入很多第三方sdk ,那么一个工程可能有好多个.a库。这么多个.a文件,能不能...

  • 一些tips(可能会持续更新)

    一:合并文件 目的是:合并两个文件解决方法:用merge合并两个文件,通过相同的列名Gene_Symbol 生成的...

  • git冲突解决

    1、发生冲突的原因 两个分支合并时,两个已经提交的分支的相同文件的不同操作进行了合并。 2、冲突解决 当出现冲突时...

  • IOS 报错:Multiple commands produce

    这个问题主要是项目内,有相同名称的文件, 文件冲突! 解决方案: 删除其中一个文件即可!

  • join

    按两个文件的相同字段合并。

  • git冲突解决

    # 本地修改的一个文件,别人同时修改相同的文件,这时候如果对方先合并到服务器上的主分支,就会造成冲突 要解决这种冲...

  • 解决iOS静态库文件冲突

    iOS 静态库冲突 两个不同的.o 文件冲突 ,静态库分离

  • Git 单文件还原

    场景 合并远程分支代码时和本地的某个文件有冲突 这时我有三个选择: 手动合并 以本地文件为主 以服务器文件为主 经...

  • git最常用命令和最常见问题整理

    解决合并冲突 2个分支的文件发生冲突的时候,VS Code会给你4个选择,选择其一之后,保存文件,然后git ad...

  • 文件位置变化后,git合并方法

    当文件的位置变化时,合并其他分支的代码,会把两个文件都保留下来,而不会指示出文件的代码冲突。 假设从A分支合并B分...

网友评论

      本文标题:.a文件分离合并(解决两个.a文件有相同的文件冲突)

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