当前位置: 首页 > article >正文

iOS .a类型静态库使用终端进行拆解和合并生成

  项目中会用到许多第三方的.a类型的静态库,有时候会有一些静态库回包含相同文件而产生冲突,我们就需要对这个库进行去重的一个操作。一般有哪些文件冲突了,xcode报错都会有详细的提示。我们可以将这两个库合并,也可以其中一方中的文件删除。我们已拆分一个test.a为例,作一个简单的总结:
        一、删除重复文件
        第一步:首先要确定你所操作的静态库支持的框架

lipo -info test.a 

        第二步:将静态库按照支持的框架拆分

以拆分armv7 框架为例
lipo -extract_family armv7 -output test_armv7.a  test.a 
这时候去文件夹下查看出现一个test_armv7.a的静态库就说明是成功了
这时候一定要记得确定(lipo -info test_armv7.a )一下你拆分出来的版本是否是你想要的这个框架下的

        第三步:删除重复的文件,记得是删除你分离出来的单框架库中的文件

ar -d test_armv7.a test1.o

        第四步:将静态库支持的框架都进行第二步和第三步操作。
        第五步:将操作完成的库合并成新的库

lipo -create -output test_new.a  test_armv7.a test_arm64.a

  二、合并静态库

         合并静态库和删除重复文件都需要确定支持框架和按照支持的框架拆分,就不在赘述了。
        第三步:将分解库中的文件拆分出来

 ar -x test_armv7.a
这时候你的文件夹中会出现你库中包含的.o文件

        第四步:将你需要合并的另一个库进行相同操作,将文件分解到相同文件夹中,相同的文件回自动的保留一份。

注意: 
     1、我是在相同的文件中操作的,所以最后分解完成记得将 test.a等源库删除。
     2、不同的框架下的文件记得分解到不同的文件夹中。

        第五步:生成不同框架下的静态库

ibtool -static -o test_new_armv7.a *.o

        第六步:合成新的静态库

lipo -create -output test_new.a  test_new_armv7.a test_new_arm64.a



 

指令合集   直接copy可用的



lipo -info SpeexKit.a

arm64 arm64e armv7 armv7s 



lipo -extract_family arm64 -output SpeexKitv64.a  SpeexKit.a

lipo -info SpeexKitv64.a



lipo SpeexKitv64.a   -thin arm64 -output  SpeexKitv64.a


ar -d SpeexKitv64.a SpeexUnit.o


———————>
lipo -extract_family arm64e -output SpeexKitv64e.a  SpeexKit.a

lipo -info SpeexKitv64e.a



lipo SpeexKitv64e.a   -thin arm64e -output  SpeexKitv64e.a


ar -d SpeexKitv64e.a SpeexUnit.o

——————>

lipo -extract_family armv7 -output SpeexKitv7.a  SpeexKit.a

lipo -info SpeexKitv7.a



lipo SpeexKitv7.a   -thin armv7 -output  SpeexKitv7.a


ar -d SpeexKitv7.a SpeexUnit.o

———————>


lipo -extract_family armv7s -output SpeexKitv7s.a  SpeexKit.a

lipo -info SpeexKitv7s.a



lipo SpeexKitv7s.a   -thin armv7s -output  SpeexKitv7s.a


ar -d SpeexKitv7s.a SpeexUnit.o



———————>



lipo -create -output SpeexKit.a  SpeexKitv64.a  SpeexKitv64e.a  SpeexKitv7.a  SpeexKitv7s.a


http://www.kler.cn/a/104665.html

相关文章:

  • 实验六:DHCP、DNS、Apache、FTP服务器的安装和配置
  • 【Python】Python写入电子表格
  • 《计算机视觉中的多视图几何》笔记(14)
  • 面试题 03.04. 动物收容所
  • 前端 JS 实现图片元素转 BASE64 编码
  • 基于机器视觉的停车位识别检测 计算机竞赛
  • 超全整理,性能测试面试题汇总+答案,25k+的offer拿到麻...
  • WinMerge-代码比较工具
  • Node.js的readline模块 命令行交互的模块
  • 《现代音乐人编曲手册_传统管弦乐配器和MIDI》 笔记
  • Android.mk 中覆盖应用包名
  • 万字长文搞懂产品模式和项目模式
  • ES在企业项目中的实战总结,彻底掌握ES的使用
  • mysql日志(错误日志、binlog日志、查询日志、慢日志)
  • S7net【C#】
  • SQL查询优化---关联查询索引优化
  • 与AI对话,如何写好prompt?
  • 【ceph】ceph集群的节点机器重启,导致磁盘的lvm消失,如何恢复呢~~满满的都是干货
  • 【Java集合类面试二十二】、Map和Set有什么区别?
  • 元宇宙游戏大爆炸,UTONMOS元宇宙游戏成爆品