當前位置:首頁 » 編程軟體 » xcode64位編譯

xcode64位編譯

發布時間: 2024-06-30 16:00:29

⑴ Xcode Build For ios Simulator arm64

前言

將一個老項目由Xcode11升級到Xcode12的時候,在用模擬器編譯的時候,報了一個錯誤,具體如下:

「ld: building for iOS Simulator, but linking in dylib built for iOS, file '/Users/xxxx/Work/Git/xxx/Framework/GoogleCast/GoogleCast.framework/GoogleCast' for architecture arm64」

我使用模擬器編譯的,遇到arm64的錯誤,一開始還是一頭霧水啊。於是Google和網路就上了,經過一番查找,基本定位到問題了。

原因

下面翻譯一位外國同仁的解釋:

Xcode 12實際上是Apple Silicon的墊腳石,但有了這個平台,我們將得到基於arm64的macOS,模擬器也將運行在arm64架構上,而不是目前基於Intel的x86_64架構。

Xcode通常依賴於「Run Destination」來構建它的庫/應用程序,所以當一個模擬器被選擇為「Run Destination」時,它將為可用的模擬器架構構建應用程序,當一個設備被選擇為「Run Destination」時,它將為設備支持的架構構建(arm*)。

xcodebuild,在Xcode 12+ build系統中,arm64是支持Apple Silicon的有效架構。因此,當一個模擬器被選擇為運行目標時,它可能會嘗試針對基於arm64的模擬器編譯/鏈接你的庫/應用程序。所以它在<architecture>-<os>-<sdk>-<destination>格式中給clang(++)發送了一些-target標志,如arm64-apple-ios13.0-simulator,clang試圖構建/鏈接基於arm64的模賣世擬器,但最終在基於Intel的mac上失敗。

但xcodebuild只在發布版本中嘗試這個。因為「Build Active Architecture Only (ONLY_ACTIVE_ARCH)」構建設置通常被設置為「No」,僅用於「發布」配置。這意味著xcodebuild將嘗試為選定的運行目標構建所有庫/應用的架構變體。對於模擬器運行目標,它現在將包括x86_64和arm64,因為arm64在Xcode 12+中也是一個支持Apple Silicon的模擬器架構。

了解原因後,剩下來就是如何解決了。

解決方法

首先看一下Xcode11和Xcode12在Architecture配置這一塊的區別:

Xcode11:中宴肢

Xcode11中有Valid Architectures的配置項。

Xcode12:

在Xcode12中,在Architecture配置組中,用Excluded Architectures代替了Valid Architectures,那麼Valid Architectures跑到哪裡去了,在User-Defined配置組裡面。

我們的目的是能在Xcode12的模擬器上順利編譯,那麼可按照下面的步驟修改:

1. 將Build Active Architecture Only配置的debug值改為Yes。如下圖。

2. 如果在Xcode11中有Valid Architectures的配置項,那麼請在Xcode12的User-Defined配置組裡面刪除Valid Architectures的配置項,同時在Target上面的Project裡面的User-Defined配置組裡面同樣刪除Valid Architectures的配置項,如何刪除,選中,敲擊鍵盤的delete就可以了。

3. 將Validate Workspace配置項修改一次,一定要變成黑粗體,默認值是NO,改成Yes就可以,或者再改回NO,反正得折騰一次。見下圖。(之前有一篇文章升級Xcode12.3報錯提到過這個配置,可參考一下。)

4. 配置完前三步基本就能編譯通過了,如果還是報錯,請嘗試在Excluded Architectures的debug模式下添加arm64,如下圖:

經過這幾步,基本就能順利編譯通過了,不過別忘了再用真機編譯試試哦,別再影響了真機祥禪測試。

結束語

個人感覺這個是Xcode12的一個坑了,不過如果所有的項目裡面都採用XCFramework,估計這個問題就能屏蔽掉了。

原文鏈接:https://blog.csdn.net/guoyongming925/article/details/114628455

熱點內容
dos強制刪除文件夾 發布:2024-11-07 16:41:05 瀏覽:294
java協程框架 發布:2024-11-07 16:30:55 瀏覽:379
預測擬合演算法 發布:2024-11-07 16:30:45 瀏覽:663
橙光原始密碼是多少 發布:2024-11-07 16:24:33 瀏覽:34
安卓電話密碼是什麼 發布:2024-11-07 16:14:44 瀏覽:317
戰網客戶端文件夾 發布:2024-11-07 16:02:42 瀏覽:123
我的世界伺服器轉賬點券的指令 發布:2024-11-07 15:57:34 瀏覽:267
馬桶解壓 發布:2024-11-07 15:57:32 瀏覽:890
手機游戲蘋果和安卓哪個好 發布:2024-11-07 15:55:36 瀏覽:701
python數據處理pdf 發布:2024-11-07 15:55:33 瀏覽:696