您的位置:首页 > 移动开发 > IOS开发

ios编译静态库.a文件

2016-09-22 11:20 246 查看
近期在做关于静态库的工作,需要生成静态库(.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文件加入测试工程中就可以进行测试了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: