码迷,mamicode.com
首页 > 移动开发 > 详细

IOS 开发学习37 的Architecture与iphone版本对应关系

时间:2015-06-24 19:10:15      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:ios   指令   

简介

Arm是处理器是移动设备上占用率最大的处理器。
armv6、armv7、armv7s、arm64都是arm处理器的指令集。通常指令是向下兼容的。在模拟器运行时,iOS模拟器运行的是x86指令集。只有在真机上,才会对执行arm指令集。

如果出现错误:
OBJC_CLASS$_xx文件名”, referenced from:
linker command failed with exit code 1 (use -v to see invocation)

要设置:

Build Active Architecture Only

这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本,所以会报错编译不到文件,出错(”OBJC_CLASS$_ZBarReaderViewController”, referenced from:)
而设置为no时,会编译所有的版本。

设备对应的architecture:

架构 版本
armv6 iPhone,iPhone 2G/3G,
iPod 1G/2G
armv7 iPhone 3GS,iPhone4,iPhone 4s,
iPad,iPad2,iPad3(The New iPad),iPad mini,
iPod Touch 3G,iPod Touch4
armv7s iPhone5, iPhone5C,
iPad4,
iPod5
arm64 iPhone5s,iPhone6,iPhone6 Plus,
iPad Air,iPad mini2(iPad mini with Retina Display)

从XCode45开始,不再支持armv6指令集。

Xcode的Achitectures设置

Architectures:

选择Target生成包所支持的指令集,则意味着生成的包里面要包含对应的指令集代码。原则上选择的Target多,会造成生成的包比较大。

Valid Architectures:

Valid Architectures限制可能被支持的指令集范围。

生成的包里,是Valid Architectures与Architectures的交集。

Build Active Architecture Only:

是否只编译当前连接设备所支持的指令集。

编译生成的包里支持的指令集,与上面的三个选项设置都有密切的关系。如:
现XCode连接New iPad(支持armv7)设置:

选项
Build Active Architecture Only YES
Architectures armv7 armv7s arm64
ValidArchitectures armv7 armv7s arm64
这时生成包支持指令集 armv7

如果是下面情况就会出现问题:

选项
Build Active Architecture Only YES
Architectures armv7 armv7s arm64
ValidArchitectures armv6 armv7s arm64
这时生成包支持指令集 编译报错:No architectures to compile for…

Build Active Architecture Only一般在Debug设为Yes,Release设置为No。

欢迎关注[独孤没剑]blog :
(http://blog.csdn.net/xundh/%20%22%E7%8B%AC%E5%AD%A4%E6%B2%A1%E5%89%91%22%20%E7%9A%84blog)

IOS 开发学习37 的Architecture与iphone版本对应关系

标签:ios   指令   

原文地址:http://blog.csdn.net/xundh/article/details/46623273

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!