armv6, armv7, armv7s, arm64 的区别
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 的区别相关推荐
- xcode armv6 armv7 armv7s arm64
眼下ios的指令集有下面几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...
- xcode armv7 armv7s arm64
armv6 armv7 armv7s arm64引起编译包翻倍增大的问题,下边来说一下关于ios这个指令集 目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G ...
- iOS armv7,armv7s, arm64
目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...
- ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64
ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64 mp3转码静态库libmp3lame.a,成功加入arm64支持后, 顺便把之前记录的二维码静态库libzbar ...
- armv6, armv7, armv7s和i386
出现这类问题一般与静态库有关. i386是代表模拟器,显示i386错误说明静态库不支持模拟器,只支持真机. armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是向下兼容的.如 ...
- 关于iOS 编译器 armv7 armv7s arm64 i386 x86_64
armv7 armv7s arm64 是ARM处理器的指令集 i386 x86_64 处理的指令集 对应的设备 arm64:iPhoneX | iphone8 plus|iPhone8| iPhone ...
- 第26月第22天 iOS瘦身之armv7 armv7s arm64选用 iOS crash
1.iOS瘦身之armv7 armv7s arm64选用 机器对指令集的支持是向下兼容的,因此armv7的指令集是可以运行在iphone5S以上的,只是效率没那么高而已~ 但是由于苹果要求必须支持ar ...
- iOS——armv7,armv7s,arm64详解
这2天升级到xcode6,用ios8 SDK编译老项目,各种Undefined symbols for architecture xxx,精神差点崩溃了.不过最后还是解决了,本文简单总结一下 简单来说 ...
- iOS关于armv7,armv7s,arm64,i386,x86_64等问题
iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器, 模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器) 模拟器64位处理器测试需要x86 ...
- iOS关于armv7,armv7s,arm64,i386,x86_64
iOS测试分为模拟器测试和真机测试,处理器分为32位处理器,和64位处理器, 模拟器32位处理器测试需要i386架构,(iphone5,iphone5s以下的模拟器) 模拟器64位处理器测试需要x86 ...
最新文章
- 【leetcode】148. Sort List
- appcontroller.php,php用什么开发app接口
- android 响应点击事件,Android响应事件onClick方法的五种实现方式小结
- Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展
- [转]XNA 3.1 转换到 XNA4.0 的备忘录
- ldd随笔(1)-linux设备模型
- pdf文件内容查看器 -- 采用wpf开发
- AutoCode For XML(XML解析代码生成器)发布
- html文件变成巨大,巨大的JavaScript HTML5 blob(从大ArrayBuffers)在客户端构建一个巨大的文件...
- struts2 javaweb 过滤器、监听器 拦截器 原理
- 重载map排序(降序)及结构体新的赋值方式
- 数学分析高等代数考研试题考研真题汇总目录2020-01-10更新
- oracle 复杂判断,单条SQL语句实现复杂逻辑几例~~
- DirectSound学习(二)--流式缓冲区
- 编程语言介绍以及特点
- Graphics2D 使用详解 【转】
- 润物无声:java的字符串操作
- iOS虚拟支付被封,6个技巧帮你快速解决烦恼
- 最新网站证书提示风险的原因和几个解决方法
- 文件服务器定时开关机,服务器设置定时开关机