美文网首页
armv7,armv7s,arm64,i386,x86_64

armv7,armv7s,arm64,i386,x86_64

作者: CoderHong | 来源:发表于2017-10-14 19:13 被阅读10次

    关于architecture以及xcode编译

    xcode编译选项中,有几个关于architecture的选项,xcode要编译的目标架构是valid architecture和active architecture的交集。xcode会对所有支持的架构进行编译,生成所有的.o文件链接成.a。不同架构的.a最后再合在一起,形成最后的.a 或二进制文件。


    Snip20171127_12.png

    Architecture 、Vaild Architectures、 Build Active Architectures Only

    • Architecture

    指定工程被编译成支持哪些指令集类型,而支持的指令集越多,就会编译出很多个指令集代码的数据包,对应生成二进制包就越大,也就是ipa包越大。

    Architecture
    • Vaild Architectures

    限制可能被支持指令集的范围,就是xcode编译出来的二进制包类型最终从这些类型产生,而编译出哪些指令集的包,将由Architectures与Valid Architectures这些交集来确定。

    • Build Active Architectures Only

    只对当前连接设备所支持的指令集编译,当设置为YES时,是为了debug编译的速度更快,它只会编译当前的architecture版本,当设置为NO时,会编译所有的版本,所以一般debug设置为YES,release设置为NO,以适应不同设备。

    Build Active Architectures Only
    1. armv7,armv7s,arm64,i386,x86_64这些都是处理器的指令集
    2. i386,x86_64为是Mac处理器的指令集(模拟器)
    3. armv7,armv7s,arm64是ARM处理器的指令集(真机)
    

    ARM处理器,特点是体积小、低功耗、低成本、高性能,所以几乎所有手机处理器都基于ARM,在嵌入式系统中应用广泛。

    指令集

    指令集
    模拟器32位处理器测试需要i386架构 (5c 4s 4... )
    模拟器64位处理器测试需要x86_64架构,(5s, 6, 6s, 7, 7plus, 8, 8plus, iphone X)
    真机32位处理器需要armv7,或者armv7s架构, (5c 4s 4... )
    真机64位处理器需要arm64架构。(5s, 6, 6s, 7, 7plus, 8, 8plus, iphone X)
    
    iPhone中5s以下,5c 4s 4...都是32位处理器,以上都为64位处理器。
    

    用命令查看静态库支持的指令集

      lipo -info 静态库
    

    相关文章

      网友评论

          本文标题:armv7,armv7s,arm64,i386,x86_64

          本文链接:https://www.haomeiwen.com/subject/mydfuxtx.html