armv6, armv7, armv7s, arm64 的区别
来源:互联网 发布:网络推广的有效方法 编辑:程序博客网 时间:2024/06/06 19:14
ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,几乎所有手机都是使用它的。
armv6, armv7, armv7s, arm64 是ARM CPU的不同指令集,原则上是向下兼容的。如iPhone4S CPU支持armv7, 但它同时兼容armv6,只是使用armv6指令可能无法充分发挥它的特性。同理iPhone5 CPU支持armv7s,它虽然也兼容armv7,但是却无法进行相关的优化。
armv6设备:iPhone, iPhone2, iPhone 3G,第一代、第二代iPod Touch
armv7设备:iPhone 3GS, iPhone 4, iPhone 4S
iPad , iPad 2, the new iPad
iPod Touch 3G, iPod Touch 4
armv7s设备:iPhone 5 iphone 5c
arm64设备:iPhone 5s iphone 6 iphone 6s
只有在目标设备上,才会执行设备对应的指令集。
如果在工程Build Setting的Architectures 中的“Build Active Architecture Only”选择为YES,则即使你设置成armv7 , armv7s同时支持,也只会编译对应指令集的包;若选择NO,则编译器会整合两个指令集到一起,此时的包比较大,但是能在iPhone5上使用armv7s的优化,同时也能适配老的设备。一般都是Debug时“Build Active Architecture Only”选择YES,用当前的架构看代码逻辑是否有问题;而在Release时选择NO,来适配不同的设备。
此外,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。所以生成静态库时都是会先生成两个.a,一个是i386的用于在模拟器运行,另一个是在真实设备上运行的,然后再用命令将两个.a合并成一个。
因此如果一些程序中使用的静态库不支持armv7s,而你的工程支持armv7s时,就会出现“xxxx does not contain a(n) armv7s slice:xxxxx for architecture armv7s"的编译错误,想要解决这个问题,有两个方法:
1.如果是开源的,能够找到源代码,则可以用源代码重新打一个支持armv7s的libaray, 或者在工程中直接使用源代码,而不是静态库。
2.如果不是开源的,要么就坐等第三方库的支持,要么就暂时让你的工程不支持armv7s。
- armv6, armv7, armv7s, arm64 的区别
- armv6, armv7, armv7s, arm64 的区别
- IOS开发之----armv6 armv7 armv7s arm64架构的区别
- armv6、armv7、armv7s、arm64这样四种的区别
- xcode armv6 armv7 armv7s arm64 的意义
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- armv6, armv7, armv7s的区别
- github怎样删除项目
- Android 6.0 如何默认打开user版本的root权限
- csu1510(规律)
- Java栈堆内存详解
- set/multiset(集与多集)
- armv6, armv7, armv7s, arm64 的区别
- UVALive5135 [Mining Your Own Business] tarjan求无向图双联通分量
- SpringMVC如何处理Ajax请求和返回Json对象
- Date对象常用属性与方法详解
- hdu 1069 Monkey and Banana (动态规划)
- linux下 signal信号机制的透彻分析与各种实例讲解
- TextView用法及实例
- Ubuntu的U盘安装
- 【Data_Structure笔记5】排序算法之【选择类排序】