Bitcode導致的編譯報錯
在xcode7.1進行Archive時,會報這樣的錯誤
ld: object contains invalid bitcode: /Users/XXX/UMSocial_Sdk_Extra_Frameworks/Wechat/libWeChatSDK.a(WechatAuthSDK.o) for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
在xcode7.2進行Archive時,會報這樣的錯誤
clang: error: unable to execute command: Segmentation fault: 11
clang: error: linker command failed due to signal (use -v to see invocation)
在Xcode 7中,我們新建一個iOS程式時,bitcode選項預設是設定為YES的。我們可以在”Build Settings”->”Enable Bitcode”選項中看到這個設定。不過,我們現在需要考慮的是三個平臺:iOS,Mac OS,watchOS。
對於iOS,bitcode是可選的;對於watchOS,bitcode是必須的;而Mac OS是不支援bitcode。
所以,如果我們的工程需要支援bitcode,則必要要求所有引入的第三方庫都支援bitcode。
在官方文件 App
Distribution Guide – App Thinning (iOS, watchOS) 一節中,找到了下面這樣一個定義:
Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will
be compiled and linked on the App Store. Including bitcode will allow Apple to re-optimize your app binary in the future without the need to submit a new version of your app to the store.
說的是bitcode是被編譯程式的一種中間形式的程式碼。包含bitcode配置的程式將會在App store上被編譯和連結。bitcode允許蘋果在後期重新優化程式的二進位制檔案,而不需要重新提交一個新的版本到App store上。
而在 What’s New in Xcode-New Features in Xcode 7 中,還有一段如下的描述:
Bitcode. When you archive for submission to the App Store, Xcode will compile your app into an intermediate representation.
The App Store will then compile the bitcode down into the 64 or 32 bit executables as necessary.
當提交程式到App store上時,Xcode會將程式編譯為一箇中間表現形式(bitcode)。然後App store會再將這個botcode編譯為可執行的64位或32位程式。
解決方案
Build Settings中,把Enable Bitcode設定為NO
相關文章
- Lombok 的@ToString導致的Maven編譯錯誤LombokMaven編譯
- 升級Xcode10導致的編譯錯誤XCode編譯
- 編譯過程導致ORA-4068錯誤編譯
- vim 編輯報錯導致無法正常退出和編輯
- 編譯檢視導致ORA-00600_17069錯誤編譯
- java由於越界導致的報錯Java
- 編譯錯誤導致浪費10多分鐘, 編譯錯誤的提示:xxx does not name a type xxx編譯
- 專案編譯報錯編譯
- 新增ijkplayer-java 導致的報錯Java
- 【爬坑】.Net編譯環境導致的問題編譯
- MySQL 網路導致的複製報錯案例MySql
- 利用ld.gold將程式編譯成llvm中的BitcodeGo編譯LVM
- 樹莓派編譯OpenCV報錯樹莓派編譯OpenCV
- PHP編譯,執行make報錯PHP編譯
- IDEA報錯java: 編譯失敗: 內部 java 編譯器錯誤IdeaJava編譯
- oracle 儲存過程不能編譯-- (編譯的同時正在訪問所導致的) [轉載]Oracle儲存過程編譯
- innodb_undo_tablespaces導致Mysql啟動報錯MySql
- Maven編譯elasticsearch-analysis-ik報錯Maven編譯Elasticsearch
- 工程中報錯或者警告(持續更新)(例如:does not contain bitcode. You must rebuild it with bitcode enabled )AIRebuild
- ORACLE自動重編譯包導致查詢被卡Oracle編譯
- [譯] RxJS: 避免因濫用 switchMap 而導致錯誤JS
- import提升導致Fundebug報錯:“請配置apikey”ImportAPI
- kaldi的編譯安裝與報錯解決方法編譯
- flutter 編譯報錯總結(不斷更新)Flutter編譯
- 編譯icedTea-web報錯填坑之旅編譯Web
- isNaN("abc")編譯報錯解決辦法NaN編譯
- 【譯】Gradle 的依賴關係處理不當,可能導致你編譯異常Gradle編譯
- idea外掛報錯導致不能啟動的處理技巧Idea
- Oracle 11.2.0.3 Database for AIX bug導致ORA-04030的報錯OracleDatabaseAI
- 編譯PHP的錯誤編譯PHP
- centos5.6部署gcc4.7編譯的程式導致問題CentOSGC編譯
- GCC8 編譯最佳化 BUG 導致的記憶體洩漏GC編譯記憶體
- maven 混合編譯 java/scala 程式碼報錯(qbit)Maven編譯Java
- iOS FFmpeg XCode編譯報錯問題 AVMediaTypeiOSXCode編譯
- glog 編譯報錯 GLOG_NO_ABBREVIATED_SEVERITIES編譯
- node-sass生產環境編譯報錯編譯
- 版本不當導致的exp出錯
- impdp時parallel=4導致的錯誤Parallel