簡體   English   中英

Xcode中的“體系結構”和“有效體系結構”選項到底是什么意思,我應該為iOS項目設置什么?

[英]What exactly do the “Architectures” & “valid architectures” options in Xcode mean, and what should I set for iOS projects?

我使用跨平台代碼,這意味着我必須為iOS構建開源C ++項目才能在我的iOS應用中使用它們。 有時我必須構建自己的項目,有時我會得到一個不錯的CMake設置,但是似乎沒有兩個項目在這兩個字段上具有完全相同的設置。

一些具有“ armv7”,另一些具有“ armv7 armv7s”,另一些具有“ armv7 armv7s arm64”。 我知道“ armv7”是指特定一代的設備硬件。 但這是否意味着如果我僅設置“ armv7”,我的應用程序將無法在armv7s或新的64位iPad上運行? 這些多重體系結構是否像胖庫一樣,每個體系結構都有單獨的副本?

然后對於“建築”,還有更多選擇。 諸如“標准體系結構(armv7,armv7s)”之類的選項,以及諸如“ $(ARCHS_STANDARD_32_64_BIT)”之類的其他選項。 我經常發現必須對這些進行更改以構建東西,而不會出現關於i386的錯誤。 一個iOS項目實際上是為Intel(模擬器)以及Arm建造的,這讓我感到困惑。

我實際上是在進行更高級別的解釋之后,而不是“使用此設置”答案。 我想確信我的應用程序可以在預期的設備上運行,因為我無法負擔目前存在的所有不同版本的iPad。 供參考,我僅支持iPad 2和更高版本,以及iOS 6/7。

這些是不同的指令集。 如果要構建庫,則需要構建下游應用程序所需的所有不同指令集/體系結構,否則在嘗試構建應用程序時會出現鏈接器錯誤。

模擬器使這變得復雜,該模擬器需要Intel x86或x86_64而不是ARM。

根據您的選擇,編譯器將創建包含多個架構的胖庫。

在運行時,不同指令集之間存在一些兼容性(例如, 32bit將在64bit上運行 ),但是在鏈接期間沒有幫助。 如果您要編譯64位,則您所包含的庫將需要64位。

因此,為您要定位設備設置了簡短答案。 例如,您可能不再需要armv6。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM