GVKun编程网logo

ios – arm64 armv7 armv7s架构设置

3

本文将为您提供关于ios–arm64armv7armv7s架构设置的详细介绍,同时,我们还将为您提供关于Apple移动设备处理器指令集armv6、armv7、armv7s及arm64、armv6arm

本文将为您提供关于ios – arm64 armv7 armv7s架构设置的详细介绍,同时,我们还将为您提供关于Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64、armv6 armv7 armv7s 架构的区别、armv6 armv7 armv7s架构的区别、armv7 mac 下 使用ldid签名&再签名的实用信息。

本文目录一览:

ios – arm64 armv7 armv7s架构设置

ios – arm64 armv7 armv7s架构设置

标准:

>仅iPad应用程序.仅支持iPad 2或更高版本.
>想要利用最新iPad的64位代码.
>最小iOS 6.
>带有iOS 7 SDK的Xcode 5.02(当前版本)

Should I set both Architectures and Valid architectures to arm64 armv7
armv7s?

解决方法

是.您可以根据上述标准设置两种体系结构.但问题是,你应该处理两种情况的代码(32位和64位).

注意:

附加说明给你.

>您可以从最低IOS 5.1获得支持>您可以将Xcode 5.0.1与IOS 7基础SDK一起使用

Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64

Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64

Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色。

 

Armv6、armv7、armv7s、arm64都是arm处理器的指令集,所有指令集原则上都是向下兼容的,如iPhone4S的CPU默认指令集为armv7指令集,但它同时也兼容armv6指令集,只是使用armv6指令集时无法充分发挥其性能,即无法使用armv7指令集中的新特性,同理,iPhone5的处理器标配armv7s指令集,同时也支持armv7指令集,只是无法进行相关的性能优化,从而导致程序的执行效率没那么高。

 

需要注意的是iOS模拟器没有运行arm指令集,编译运行的是x86指令集,所以,只有在iOS设备上,才会执行设备对应的arm指令集。

 

目前为止Apple移动设备默认指令集(2014.8.22)

-------------------------------------------------------------------------------------

armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch

armv7 设备: iPhone3GS, iPhone4, iPhone4S

                      iPad, iPad2, iPad3(The New iPad), iPad mini

                      iPod Touch 3G, iPod Touch4

armv7s设备: iPhone5, iPhone5C, iPad4(iPad with Retina Display)

arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)

-------------------------------------------------------------------------------------

XCode中与指令集相关的选项(Build Settings 面板下 Architectures):

 

Architectures:      

指明选定Target要求被编译生成的二进制包所支持的指令集支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,从而会造成最终编译生成的包很大。

 

Valid Architectures:

指明可能支持的指令集并非Architectures列表中指明的指令集都会被支持,Valid Architectures限制可能被支持的指令集的范围,即Valid Architectures和Architectures列表的交集,才是XCode最终生成二进制包所支持的指令集。

 

比如,将Architectures支持arm指令集设置为:armv7,armv7s,对应的Valid Architectures的支持的指令集设置为:armv7s,arm64,那么此时,XCode生成二进制包所支持的指令集只有armv7s 。 

 

Build Active Architecture Only:

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

该选项起作用的条件有两个,必须同时满足才会起作用:

1. 其值设置为YES

2. XCode成功连接调试设备

假定我们将Build Active Architecture Only值设置为YES,同时XCode连接上手机iPhone5S(匹配指令集arm64)

 

1. 第一种情况

Architectures:  armv7, armv7s, arm64

ValidArchitectures:  armv6, armv7s, arm64

生成二进制包支持的指令集: arm64 

 

2. 第二种情况

Architectures: armv6, armv7, armv7s

Valid Architectures:  armv6, armv7s, arm64

生成二进制包支持的指令集: armv7s 

 

3. 第三种情况

Architectures:  armv6, armv7

Valid Architectures: armv6, armv7s, arm64

生成二进制包支持的指令集: armv7

 

4. 第四种情况

Architectures: armv6

Valid Architectures: armv6, armv7s, arm64

生成二进制包支持的指令集: 虽然编译成功了,但是并没有任何目标生成, 因为从XCode4.5开始,就不再支持armv6指令集,所以列表中写了也是白写。

 

5. 第五种情况

Architectures: armv7, armv7s, arm64

Valid Architectures: armv7,armv7s

生成二进制包支持的指令集: 编译出错信息

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s)

可以看出:当Build Active Architecture Only起作用时:

连接的手机指令集匹配是由高到低(arm64 > armv7s > armv7)依次匹配的。

 

如连接手机为iPhone5S,其默认指令集为arm64,若Architectures列表为armv7, armv7s,则会选取armv7s指令集为目标指令集,如果此时Valid Architectures列表中包含该指令集,则成功生成的二进制包只支持armv7s指令集,若alid Architectures列表不包含此指令集,则编译将会出错:

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7 arm64)

 

同样的,若Architectures列表为armv7,则会选取armv7作为目标指令集,若Valid Architectures列表中包含了armv7指令集,则能够成功生成二进制包,其支持的指令集只有armv7,若Valid Architectures列表中不包含armv7,则编译失败。

建议:通常Debug模式设置值为Yes,Release模式设置为No


armv6 armv7 armv7s 架构的区别

armv6 armv7 armv7s 架构的区别

arm 结构处理器,几乎所有的手机都基于 arm,其在嵌入式系统中应用非常广泛。 

ARM 处理器因为低功耗和小尺寸而闻名,它的性能在同等功耗的产品中也很出色。这里我们注意一点,模拟器并不运行 arm 代码,软件会被编译成 x86 可以运行的指令。只有在目标设备上,才会执行设备对应的指令集。
 
ARMv6 设备包括
iPhone, iPhone2, iPhone3G 以及第一代和第二代 iPod Touch
 
ARMv7 设备包括
iPhone3GS, iPhone4
iPad, iPad2, the new ipad
iPod touch 3G, iPod touch 4
 
ARMv7s 设备包括
iPhone5
 
如果在工程 build setting 的 Architectures 中 选 “Standard Active Architecture Only” 为 True 则,选择 Armv6 或 v7 都只会编译对应指令集的包;若选 false,则编译器会整合两个指令集到一起,则包比较大,但是能使用 Armv7 的优化,同时能适配到老的机器。 一般 Debug 的时候 “Build Active Architecture Only” 选择 YES,用当前架构看代码逻辑是否有问题,发 Release 的时候选择 NO,因为需要适配其他的机型。
 
低 arm 的包可以在高 arm 的机子上跑,反之则不可以。

armv6 armv7 armv7s架构的区别

armv6 armv7 armv7s架构的区别

arm结构处理器,几乎所有的手机都基于arm,其在嵌入式系统中应用非常广泛。 

ARM 处理器因为低功耗和小尺寸而闻名,它的性能在同等功耗的产品中也很出色。这里我们注意一点,模拟器并不运行arm代码,软件会被编译成x86可以运行的指令。只有在目标设备上,才会执行设备对应的指令集。
 
ARMv6设备包括
iPhone, iPhone2, iPhone3G以及第一代和第二代iPod Touch
 
ARMv7设备包括
iPhone3GS, iPhone4
iPad, iPad2, the new ipad
iPod touch 3G, iPod touch 4
 
ARMv7s设备包括
iPhone5
 
如果在工程build setting的Architectures中 选“Standard Active Architecture Only”为True则,选择Armv6或v7都只会编译对应指令集的包;若选false,则编译器会整合两个指令集到一起,则包比较大,但是能使用Armv7 的优化,同时能适配到老的机器。 一般Debug的时候“Build Active Architecture Only”选择YES,用当前架构看代码逻辑是否有问题,发Release的时候选择NO,因为需要适配其他的机型。
 
低arm的包可以在高arm的机子上跑,反之则不可以。

armv7 mac 下 使用ldid签名&再签名

armv7 mac 下 使用ldid签名&再签名

iPhone 首次签名方法ldid -S helloiPhone 再签名方法ldid -s helloMac OS X 首次签名方法

export
CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate;
ldid -S helloMac OS X
再签名方法
export
CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate;
ldid -s helloldid
编译及安装方法 (Mac OS X Intel)
curl -O http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.476.tgz
tar
-zxf ldid-1.0.476.tgz
cd ldid-1.0.476
g++ -I . -o util/ldid{,.cpp} -x c
util/{lookup2,sha1}.c
sudo cp -a util/ldid /usr/bin
ldid 编译及安装方法 (Mac OS X
PPC)
curl -O http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.476.tgz
tar
-zxf ldid-1.0.476.tgz
wget -qO- http://fink.cvs.sourceforge.net/viewvc/*checkout*/fink/dists/10.4/unstable/crypto/finkinfo/ldid.patch?revision=1.1
| patch -p0
cd ldid-1.0.476
g++ -I . -o util/ldid{,.cpp} -x c
util/{lookup2,sha1}.c
sudo cp -a util/ldid /usr/bin

关于ios – arm64 armv7 armv7s架构设置的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64、armv6 armv7 armv7s 架构的区别、armv6 armv7 armv7s架构的区别、armv7 mac 下 使用ldid签名&再签名的相关信息,请在本站寻找。

本文标签: