b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

armv6_arm和amd_高通和arm的关系

电脑杂谈  发布时间:2017-06-15 18:01:25  来源:网络整理

armv6, armv7, armv7s和i386 出现这类问题一般与静态库有关。

i386是代表模拟器,显示i386错误说明静态库不支持模拟器,只支持真机。

armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是向下兼容的。armv6如iPhone4S CPU支持armv7,但它同时兼容armv6,只是使用armv6指令可能无法充分发挥它的特性。同理iPhone5CPU支持armv7s,它虽然也兼容armv7,但是却无法进行相关的优化。armv6

只有在目标设备上,才会执行设备对应的指令集。

如果在工程Build Setting的Architectures 中的“Build Active ArchitectureOnly”选择为YES,则即使你设置成armv7 ,armv7s同时支持,也只会编译对应指令集的包;若选择NO,则编译器会整合两个指令集到一起,此时的包比较大,但是能在iPhone5上使用armv7s的优化,同时也能适配老的设备。一般都是Debug时“Build

Active ArchitectureOnly”选择YES,用当前的架构看代码逻辑是否有问题;而在Release时选择NO,来适配不同的设备。

此外,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。所以生成静态库时都是会先生成两个.a,一个是i386的用于在模拟器运行,另一个是在真实设备上运行的,然后再用命令将两个.a合并成一个。

因此如果一些程序中使用的静态库不支持armv7s,而你的工程支持armv7s时,就会出现“xxxx does not containa(n) armv7s slice:xxxxx for architecturearmv7s'的编译错误,想要解决这个问题,有两个方法:

1.如果是开源的,能够找到源代码,则可以用源代码重新打一个支持armv7s的libaray,或者在工程中直接使用源代码,而不是静态库。

2.如果不是开源的,要么就坐等第三方库的支持,要么就暂时让你的工程不支持armv7s。

本文链接: armv6,armv7, armv7s和i386


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-52967-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...