日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS设备之armv6,armv7,armv7s,arm64

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS设备之armv6,armv7,armv7s,arm64 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

arm結構處理器,因為低功耗和小尺寸而聞名,幾乎所有的手機都基于arm,其在嵌入式系統中應用非常廣泛。?它的性能在同等功耗的產品中也很出色。

??????? 對于IOS而言,模擬器并不運行arm的指令集,編譯運行的是x86指令集。只有在IOS設備上,才會執行設備對應的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

arm64:iphone 5s土豪金

?

只有在目標設備上,才會執行設備對應的指令集。

如果在工程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合并成一個。

?

因此如果一些程序中使用的.a靜態庫不支持armv7s,而你的工程支持armv7s時,就會出現“xxxx does not contain a(n) armv7s slice:xxxxx for architecture armv7s"的編譯錯誤,想要解決這個問題,有兩個方法:

1.如果是開源的,能夠找到源代碼,則可以用源代碼重新打一個支持armv7s的libaray, 或者在工程中直接使用源代碼,而不是靜態庫。

2.如果不是開源的,要么就坐等第三方庫的支持,要么就暫時讓你的工程不支持armv7s

總結

以上是生活随笔為你收集整理的IOS设备之armv6,armv7,armv7s,arm64的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。