iOS开发中使用静态库 .a 文件
2016-01-15 16:21
211 查看
iOS开发中,在使用一些第三方库时,可能是一个静态库(比如GPUImage)。这种情况下,需要编译出静态库文件(.a) ,然后配合响应的头文件(.h 文件)使用。
编译静态库,直接在Xcode中编译即可,有一个细节需要注意。
平常的开发调试中,我们既可以用模拟器调试,也可以用真机调试。实际上,模拟器和真机的处理器是不同的,这也导致了基于真机的静态库文件不适用于模拟器。倘若只是生成了基于真机的静态库文件,当改为模拟器运行时,会提示类似 .a file was built for archive which is not the architecture being linked (i386) 的错误。
解决方法:
使用 lipo 命令,我们可以查看一个静态库对处理器架构的支持。比如:
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161017507-215695588.png)
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161037819-1393585158.png)
可以看到基于模拟器的静态库文件和基于真机的静态库文件对处理器的支持是不同的。
生成基于真机的静态库文件: 运行时,选择设备为真机。
生成基于模拟器的静态库文件:运行时,选择设备为模拟器。
生成后的目录结构:
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161149913-1889501496.png)
为了在开发中方便,通常情况下会将这两个静态库文件合并成一个静态库文件,方法是使用 lipo -create iphone.a simulator.a -output save.a ,其中 iphone.a、simulator.a、save.a 分别代表真机的静态库文件、模拟器的静态库文件、合并后静态库保存的路径。
查看合并后的静态库文件对处理器的支持情况,如下:
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161758850-1273077168.png)
可以看到,既支持 x86_64,又支持 arm64。
在我们自己的工程中使用合并后的 .a 文件以及相应的头文件,就可以在模拟器和真机上都顺畅运行了。
编译静态库,直接在Xcode中编译即可,有一个细节需要注意。
平常的开发调试中,我们既可以用模拟器调试,也可以用真机调试。实际上,模拟器和真机的处理器是不同的,这也导致了基于真机的静态库文件不适用于模拟器。倘若只是生成了基于真机的静态库文件,当改为模拟器运行时,会提示类似 .a file was built for archive which is not the architecture being linked (i386) 的错误。
解决方法:
使用 lipo 命令,我们可以查看一个静态库对处理器架构的支持。比如:
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161017507-215695588.png)
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161037819-1393585158.png)
可以看到基于模拟器的静态库文件和基于真机的静态库文件对处理器的支持是不同的。
生成基于真机的静态库文件: 运行时,选择设备为真机。
生成基于模拟器的静态库文件:运行时,选择设备为模拟器。
生成后的目录结构:
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161149913-1889501496.png)
为了在开发中方便,通常情况下会将这两个静态库文件合并成一个静态库文件,方法是使用 lipo -create iphone.a simulator.a -output save.a ,其中 iphone.a、simulator.a、save.a 分别代表真机的静态库文件、模拟器的静态库文件、合并后静态库保存的路径。
查看合并后的静态库文件对处理器的支持情况,如下:
![](http://images2015.cnblogs.com/blog/490851/201601/490851-20160115161758850-1273077168.png)
可以看到,既支持 x86_64,又支持 arm64。
在我们自己的工程中使用合并后的 .a 文件以及相应的头文件,就可以在模拟器和真机上都顺畅运行了。
相关文章推荐
- iOS 用for循环写了一排button
- 关于iOS9之后 获取用户是否安装sim卡 的方法
- 160115iOS多线程中performSelector: 和dispatch_time的不同
- iOS利用Runtime自定义控制器POP手势动画
- iOS-生命周期
- iOS设置Label上显示不同字体大小
- CGContext小记
- iOS 自动化生成API文档
- iOS傻金币动画
- 干货!总结19个提升iOS开发技术的必看教程!
- iOS开发正则表达式判断邮箱是否合法
- ios开发首次安装或者版本升级的引导页的判断
- mac 终端 svn 命令ios
- 以下是unix的命令行,供参考 ios
- iOS开发判断身份证号是否合法
- ios 定位是否可用的判断
- NSURLSession断点续传
- 命令行操作ios
- 需求 - 4 - 滚动广播文字 - 2
- IOS 检查版本更新