ios编译静态库.a文件

近期在做关于静态库的工作,需要生成静态库(.a),查了一些资料,在此总结记录一下

参考文章:http://www.bkjia.com/IOSjc/1087092.html

                  http://blog.csdn.net/ztp800201/article/details/41119585

常用命令:

1.查看静态库包含的包:lipo -info xxx1.a

2.新建文件夹:mkdir armv7

3.分解出armv7:lipo xxx1.a  -thin armv7  -output  xxx1_armv7.a

4.解压object file:ar xv xxx1_armv7.a

5.重新生成.a文件: ar rcs xxx_armv7_new.a armv7/*.o

6.合并两个.a文件:lipo -create xxx1.a xxx2.a -output xxx_new.a

7.查看静态库包含的包:lipo -info xxx1.a


一. 如果工程中引用其他第三方库文件,多于一个时,可以先将这些库文件(.a)合并成一个再进行下一步

     如果这些静态库是fat的,需要先分解为non fat,才能进行合,如果xxx1.a xxx2.a都包含armv7框架,合并会失败,需要将armv7文件解压在一起,重新生成静态库.a文件

       例子: 假设xxx1.a xxx2.a 包含armv7 和 arm64

       可以新建一个文件夹,存放armv7解压出的object file

       1.新建文件夹:mkdir armv7

       2.分解出armv7:lipo xxx1.a  -thin armv7  -output  xxx1_armv7.a

       3.解压object file:cd armv7 && ar xv xxx1_armv7.a(需要先将xxx1_armv7.a文件移至文件夹armv7下)

       4.将xxx2.a重复上诉操作,解压出armv7的object file,xxx2.a解压出的armv7的object file也要放入armv7文件夹下

     (armv7解压出的object file 文件放在一起,重复的文件会覆盖)

       5.重新生成.a文件:cd .. && ar rcs xxx_armv7_new.a armv7/*.o(此时处于armv7上级文件夹下)

       6.arm64重复上诉步骤,生成xxx_arm64_new.a

       7.合并两个.a文件:lipo -create xxx_arm64_new.a xxx_armv7_new.a -output xxx_new.a

      此时,xxx1.a xxx2.a两个文件就合并成功了

二.创建静态库工程,如下图,选择statistic Library(framework 选择第一个)


三.静态库工程配置如下图(如果只想生成armv7的静态库文件,Architectures中只写armv7,Architectures Only改为YES,生成的静态库就不包含arm64的)



四.将要编译的文件拖入工程根目录,将要暴露的头文件加入public下


五.编译:

编译时,选择模拟器,生成的静态库是i386或x86的,选择下方的方式,编译的是对应的静态库(步骤三中设置的)



此时,工程Products下的.a文件就生成了,右键在文件夹中打开,会看到有个user文件夹,user-local-include下就是暴露出的头文件,将头文件和.a文件加入测试工程中就可以进行测试了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值