ARM指令集
一、几个重要概念
1、ARM处理器
ARM处理器:特点是体积小、低功耗、低成本、高性能,几乎所有手机处理器基于ARM,在嵌入式系统中应用广泛。
2、ARM处理器指令集
armv6 | armv7 | armv7s | armv64都是ARM处理器的指令集,这些指令集都是向下兼容的,例如armv7指令集兼容armv6,只是使用armv6的时候无法发挥其性能,无法使用armv7的新特性,从而会导致程序执行效率没有那么高。
iOS模拟器会遇到i386和x86_64,模拟器没有arm指令集。i386是针对Intel通用微处理器32架构,x86_64是针对x86架构的64位处理器。
3、目前iOS移动设备指令集
指令集预览armv6--armv7--armv7s--arm64
三、制作静态库.a是指令集选择
现在回归到正题,如何制作一个“没有问题”的.a静态库,通过以上信息了解到,当我们做App的时候,为了追求高效率,并且减小包的大小,Build Active Architecture Only设置成YES,Architectures按Xcode默认配置就可以,因为arm64向前兼容。但制作.a静态库就不同了,因为要保证兼容性,包括不同iOS设备以及模拟器运行不出错,所以结合当前行业情况,要做到最大的兼容性。
ValidArchitectures设置为:armv7|armv7s|arm64|i386|x86_64
Architectures设置不变(或根据你需要): armv7|arm64
然后分别选择iOS设备和模拟器进行编译,最后找到相关的.a进行合包,使用lipo -create 真机库.a的路径 模拟器库.a的的路径 -output 合成库的名字.a(详情可以参考http://blog.csdn.net/lizhongfu2013/article/details/12648633)