[英]Can't build iOS/iPhone app as anything other than i386
我是iOS / iPhone / XCode世界的新手,所以如果你猜的是介於相當復雜的東西之間,而且每個人都應該知道這么簡單,我會選擇簡單的答案。 :-)
好的,所以我繼承了一個我們外包給另一家公司的iPhone項目。 我現在唯一的目標是能夠建立當時的事情。 我設置了XCode 4.2並安裝了適當的SDK。 我加載了這個項目,到目前為止一切似乎都很好。 但是,當我構建時,我會從我認為構建的鏈接階段中得到錯誤。 我不完全確定,因為建築時狀態會迅速改變。 我得到的錯誤如下:
從我在網上找到的,似乎我使用的其中一個庫沒有為i386平台編譯。 首先,這對我來說沒有意義,因為我正在使用的庫(這些錯誤來自哪里)目前作為子項目包含並生成.a文件,我認為這些文件是獨立於拱形的(我在這里錯了) ??)。 此外,我在項目中找不到任何指示XCode構建i386架構的項目。 這是我到目前為止所做的:
主項目配置
子項目配置
當我使用發布配置構建時,我仍然遇到此錯誤,我不知道為什么。 我在構建配置中看到的所有內容似乎都表明我應該在arm架構中構建所有內容。
您遇到錯誤,因為您搞亂了架構設置。 您不應該將這些修復為ARM代碼,但也允許使用i386。
現在,您的一個(子)項目只構建ARM代碼,一旦您嘗試構建模擬器版本,就會導致鏈接器錯誤。 這種情況正在發生,因為您的架構設置並非如此。
請注意您的Any iOS SDK設置,因為它只構建ARM代碼,因此不正確。 選擇特定設置(單擊)后,使用鍵盤上的退格鍵完全刪除這些設置。
這應該是這樣的:
$(ARCHS_STANDARD_32_BIT)
在構建特定於設備的代碼時解析為ARMV7
,在構建模擬器特定代碼時解析為i386
。 只有當您計划將結果提供給較舊的iOS設備(iPhone 3G及更低版本)時,才需要根據我的屏幕截圖包含ARMV6
代碼。
一旦這些設置在所有(子)項目中都處於活動狀態 ,一切都應該順利進行。
LIPO
項目中創建通用庫,如果您計划將靜態庫分發給其他開發人員,請使用LIPO
。
例:
lipo input_library_1.a input_library_2.a -create -ouput output_library.a
讓我們說input_library_1是i386
特定的(模擬器)和input_library_2是ARM
特定的(設備),這將它們連接成可用於模擬器和設備的通用版本。
您似乎一直在嘗試鏈接到為設備構建的靜態庫(armv6或armv7)。 當您為模擬器構建時,架構將是i386。 所以你得到了所有這些討厭的鏈接錯誤。 解決方案是在項目中包含為模擬器編譯的庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.