之所以提到CPU架构的问题,其实是iOS开发使用的静态库与动态库与之紧密相连。在运行项目的时候,Xcode需要分析当前运行平台的CPU架构,然后确定所使用的静态库是否支持这个CPU架构。如果不支持就会报错。

什么是CPU架构?

CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。
目前市面上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。
两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是PowerPC架构,ARM公司是ARM架构。
通常,我们知道电脑的CPU架构有X86(32位)和X64(64位)等,但是手机的主流CPU架构是ARM架构,因为采用ARM架构的CPU是一种微处理器,这种处理器功耗低,体积小,更适合手机使用,iPhone的CPU也是如此。

iOS默认指令集

模拟器:
i386:iphone5/iphone5c以下的模拟器
x86_64:iPhone5s以上的模拟器
真机:
armv6:iPhone、iPhone2、iPhone3G、iPod Touch(第一代)、iPod Touch(第二代)
armv7:iPhone3Gs、iPhone4、iPhone4s、iPad、iPad 2
armv7s:iPhone5、iPhone5c
arm64:iPhone5s、iPhone6、iPhone6p、iPhone6s、iPhone6sp、iPhone7、iPhone7p、iPhone8、iPhone8p、iPhoneX
arm64e:iPhone XS、iPhone XS Max、iPhone XR
即:
模拟器32位处理器需要i386架构
模拟器64位处理器需要x86_64架构
真机32位处理器需要armv7,或者armv7s架构
真机64位处理器需要arm64,或者arm64e架构

有关指令集使用特点

  1. 上述arm处理器指令集,在原则上它们都是向下兼容的。比如iPhone6s的CPU默认指令集是arm64,但是也同时支持armv7s等以前版本的指令集,只是效率变低了而已。
  2. xcode模拟器其实是在电脑上的,所以iOS模拟器并没有使用arm指集。它编译运行使用的是x86指令集(或者i386)。而在真机上使用的才是arm类型的指令集。
  3. 在Xcode中设置二进制包所支持的指令集,对于编译后的二进制包的大小影响显著,设置支持的指令集个数越少,安装包也越小。

实际开发中的选择

Xcode中指令集相关选项(target-Build Settings-Architectures)

Architectures

  • Architectures:
    指定工程可支持的全部指令集类型
    默认为: Standard architectures - $(ARCHS_STANDARD) ,
  • Valid Architectures:
    限制可能被支持的指令集的范围,也就是Xcode编译出来的二进制包类型最终从这些类型产生,而编译出哪种指令集的包,将由Architectures与Valid Architectures的交集来确定
  • Build Active Architecture Only:
    指定是否只对当前连接设备所支持的指令集编译
    设置为Yes时,编译速度更快,因为它只编译为支持当前CPU架构的版本;而设置为no时,会编译所有的版本。
    所以,一般Debug的时候设置为Yes,Release的时候设置为No。

举例

将Architectures支持arm指令集设置为:armv7,armv7s,对应的Valid Architectures的支持的指令集设置为:armv7s,arm64,那么此时,Xcode生成二进制包所支持的指令集只有armv7s
iPhone5s的CPU架构为arm64,由于可以向下兼容,所以可以运行armv7s指令集工程,但是这会降低iPhone5s的性能。

拓展

32位与64位系统的区别:

  1. CPU一次处理数据的能力是32位还是64位
  2. 内存寻址方面,最大寻址空间不同,32位系统最大寻址空间232,大约为4G,也就是说32位系统的处理器最大只支持到4G内存,而64位系统最大支持的内存高达数亿位(264)

名词解释:
x86(86_32): Intel 8086、80186、80286、80386(32位)、80486、80586等一系列指令集(架构)的泛称,支持16位、32位和64位的架构都有。实际上由于32位x86处理器的统治性地位,术语“x86”几乎表示32位的架构,即x86=x86_32,一般意义上的32位处理器
x64(x86_64): 一般意义上的64位处理器
**i386: **指Intel 80386,是第一个32位的x86架构的处理器
AMD64: AMD公司生产的第一代64位CPU

iOS - CPU架构相关推荐

  1. iOS CPU架构(ARM指令集)

    简述 ARM处理器,因其功耗低和尺寸小而闻名,几乎所有的手机处理器都基于ARM,苹果当然也不例外. armv6.armv7.armv7s.arm64都是ARM处理器的指令集,所有指令集原则上都是向下兼 ...

  2. 手机的CPU架构简述及SO兼容(Android/iOS)及手机硬件等,手机IMEI

    CPU(计算)+RAM(内存)+ROM(内置存储卡)+ GPU(图像处理等)等参数.   手机芯片制造商高通:英特尔Intel芯片,服务器芯片. > CPU类型与SO文件 -- 手机的CPU,多 ...

  3. iOS真机和模拟器CPU架构

    1.如何合并真机和模拟器的.a库 先做好真机与模拟器的静态库,打开终端管理器,输入lipo -create +(真机及模拟器的静态库文件)(直接拖动相应文件进来会自动生成地址) + -output   ...

  4. CPU架构之ARM优化

    1.资源 1.1.ARM开发者官网 https://developer.arm.com/ http://infocenter.arm.com 1.2.纯汇编和inline汇编参考资源 32位ARM优化 ...

  5. 指令集架构、微架构、处理器架构、CPU架构、内核

    前两天看书碰到了"CPU架构"这个词,脑子里感觉有点模糊不懂.查阅相关资料后又陆续碰到了"指令集架构"."微架构"."处理器架构& ...

  6. ARM与X86 CPU架构对比区别

    ARM与X86 CPU架构对比区别 CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计 ...

  7. Firefox 的User Agent 将移除 CPU 架构信息

    Mozilla 计划从 Firefox 的 User Agent(用户代理)和几个支持的 API 中移除 CPU 架构信息,以减少 Firefox 用户的"数字指纹".Web 浏览 ...

  8. (转)从CPU架构和技术的演变看GPU未来发展

    泡泡网显卡频道5月28日 自从AMD提出Fusion(融聚)的概念.NVIDIA加大力度推广GPU通用计算.Intel率先将CPU和GPU整合在一起之后,大家就会发现CPU和GPU从没如此亲密无间过, ...

  9. iOS应用架构谈 组件化方案

    简述 前几天的一个晚上在infoQ的微信群里,来自蘑菇街的Limboy做了一个分享,讲了蘑菇街的组件化之路.我不认为这条组件化之路蘑菇街走对了.分享后我私聊了Limboy,Limboy似乎也明白了问题 ...

最新文章

  1. 解决:VS 2005/2008 中 fstream 不能处理带有中文路径的问题
  2. 理解离散傅立叶变换(三.复数)
  3. java用户的登录图片_Java 如何用 token 做用户登录认证
  4. App的selenium,Appium爬App!
  5. android给数组添加新元素_「数组赋值」什么是数组、如何创建数组、数组赋值、数组增加一个新元素 - seo实验室...
  6. android 模仿uc标签页,android模仿UC首页天气效果
  7. Flask cookie
  8. libxml2 知:介绍
  9. adb命令检测手机bl有无上锁_用adb命令解bl锁
  10. 类别不平衡问题之SMOTE算法(Python imblearn极简实现)
  11. 音视频中的码率控制(CBR、VBR、CVBR、FIXQP)
  12. HTML基础跟着李南江学编程
  13. 创建FTP站点访问超链接
  14. 服务器挖矿病毒的排查过程
  15. 如何活跃社群,提高转化
  16. oeasy和你玩转微信公众号-刘青-专题视频课程
  17. 面积计算9860SD计算器程序(好用就用,不用就删-----歪XX)
  18. jquery 立体走马灯_jquery实现页面百叶窗走马灯式翻滚显示效果的方法
  19. uniApp学习(8)搜索框的创建和自动获取焦点
  20. shell for 循环

热门文章

  1. 回溯法求解K图染色问题(java版)
  2. php播放一个提示音,ajax实现web页面的消息实时提醒时播放提示音
  3. HTML中字体的设置
  4. 基于PHP旅游景区景点售票系统设计与实现 开题报告
  5. 基于51单片机多功能电磁炉仿真设计-protues
  6. 死磕Ubuntu18(完)
  7. 四川大学计算机应用基础考试试题,几个有关计算机基础的题目!!!~~
  8. 关于Flask通过局域网访问(局域网内任意设备通过ip:port访问)
  9. 842t计算机组成原理,2017年四川省培养单位408计算机学科专业基础综合之计算机组成原理考研导师圈点必考题汇编...
  10. 2022大数据面试总结