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 的区别相关推荐

  1. xcode armv6 armv7 armv7s arm64

    眼下ios的指令集有下面几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...

  2. xcode armv7 armv7s arm64

    armv6 armv7 armv7s arm64引起编译包翻倍增大的问题,下边来说一下关于ios这个指令集 目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G ...

  3. iOS armv7,armv7s, arm64

    目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...

  4. ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64

    ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64 mp3转码静态库libmp3lame.a,成功加入arm64支持后, 顺便把之前记录的二维码静态库libzbar ...

  5. armv6, armv7, armv7s和i386

    出现这类问题一般与静态库有关. i386是代表模拟器,显示i386错误说明静态库不支持模拟器,只支持真机. armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是向下兼容的.如 ...

  6. 关于iOS 编译器 armv7 armv7s arm64 i386 x86_64

    armv7 armv7s arm64 是ARM处理器的指令集 i386 x86_64 处理的指令集 对应的设备 arm64:iPhoneX | iphone8 plus|iPhone8| iPhone ...

  7. 第26月第22天 iOS瘦身之armv7 armv7s arm64选用 iOS crash

    1.iOS瘦身之armv7 armv7s arm64选用 机器对指令集的支持是向下兼容的,因此armv7的指令集是可以运行在iphone5S以上的,只是效率没那么高而已~ 但是由于苹果要求必须支持ar ...

  8. iOS——armv7,armv7s,arm64详解

    这2天升级到xcode6,用ios8 SDK编译老项目,各种Undefined symbols for architecture xxx,精神差点崩溃了.不过最后还是解决了,本文简单总结一下 简单来说 ...

  9. iOS关于armv7,armv7s,arm64,i386,x86_64等问题

    iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器, 模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器) 模拟器64位处理器测试需要x86 ...

  10. iOS关于armv7,armv7s,arm64,i386,x86_64

    iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器, 模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器) 模拟器64位处理器测试需要x86 ...

最新文章

  1. 【leetcode】148. Sort List
  2. appcontroller.php,php用什么开发app接口
  3. android 响应点击事件,Android响应事件onClick方法的五种实现方式小结
  4. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展
  5. [转]XNA 3.1 转换到 XNA4.0 的备忘录
  6. ldd随笔(1)-linux设备模型
  7. pdf文件内容查看器 -- 采用wpf开发
  8. AutoCode For XML(XML解析代码生成器)发布
  9. html文件变成巨大,巨大的JavaScript HTML5 blob(从大ArrayBuffers)在客户端构建一个巨大的文件...
  10. struts2 javaweb 过滤器、监听器 拦截器 原理
  11. 重载map排序(降序)及结构体新的赋值方式
  12. 数学分析高等代数考研试题考研真题汇总目录2020-01-10更新
  13. oracle 复杂判断,单条SQL语句实现复杂逻辑几例~~
  14. DirectSound学习(二)--流式缓冲区
  15. 编程语言介绍以及特点
  16. Graphics2D 使用详解 【转】
  17. 润物无声:java的字符串操作
  18. iOS虚拟支付被封,6个技巧帮你快速解决烦恼
  19. 最新网站证书提示风险的原因和几个解决方法
  20. 文件服务器定时开关机,服务器设置定时开关机

热门文章

  1. java简历项目经验大全(java商城项目经验简历)
  2. 读书笔记:《码农增刊·游戏人生》
  3. 根据网卡MAC地址查询厂商信息
  4. mysql数据库置疑_SQL数据库置疑 823 824 错误修复 无法附加处理
  5. Android打开系统文件管理器
  6. matlab 关闭mdl,双击m文件和mdl文件重新打开一个matlab主程序
  7. php有c语言基础教程,c语言必背入门代码
  8. 蓝桥杯真题:外卖优先级
  9. 再次细分防火墙 WebRAY为何定义MAF新品类
  10. 乐优商城项目实战系列笔记1-项目搭建