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文件加入测试工程中就可以进行测试了
参考文章: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文件加入测试工程中就可以进行测试了
相关文章推荐
- 使用ar命令删除iOS静态库重复编译的.o文件
- iOS编译静态库缩减包文件大小
- 使用静态库时需要注意的事项(gcc下程序调用静态库编译命令:主文件必须在静态库前面!)
- 编译静态库和动态库的Makefile文件
- iOS 合并.a文件,制作通用静态库
- iOS静态库的编译
- iOS开发之---静态库的编译以及相关问题的处理
- 编译静态库和动态库的Makefile文件
- iOS静态库的编译
- sqlite源码在mac编译静态库.a文件
- iOS 静态库编译Cocoa Touch Static Library(Xcode 4.4.1)
- (转) 自动编译iOS工程,生成app及ipa文件的方法
- iOS开发之---静态库的编译以及相关问题的处理
- 在 iOS 上使用 gcc 编译 C/C++ 文件
- ios 编译静态库
- 如何编译出兼容4.3, 4.3以下和以上版本的iOS静态库文件?及在4.2真机上运行?
- [转]gcc下程序调用静态库编译命令:主文件必须在静态库前面!
- 编译静态库和动态库的Makefile文件
- iOS开发之---静态库的编译以及相关问题的处理
- ios 编译错误--文件连接错误