1.參考
適配Xcode10與iOS12之libstdc++問題
解決Xcode10 library not found for -lstdc++ 找不到問題
libstdc++適配Xcode10與iOS12(親測有效)
2.實戰
問題描述
手中的項目,在Mac系統升級或Xcode升級后,編譯報錯,報錯信息為
Reason: no suitable image found. Did find:
/usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator
原因是XCode10 和 iOS12 中移除了 libstdc++ 這個庫。如果項目依賴libstdc++,或者項目依賴的第三方庫有依賴libstdc++。解決辦法也很簡單
如果是自己的項目有依賴libstdc++
在項目TARGETS-BulidPhases-Link Binary With Libraires中去掉libstdc++,添加上libc++即可
如果是項目依賴的第三方庫有依賴libstdc++
需要更新第三方庫版本即可。如果第三方的最新版本依舊依賴libstdc++,盡快反饋給第三方庫的開發方。
但是還是會有別的原因不能去掉libstdc++
比如第三方庫已經很久沒有維護了,或者項目中使用的三方庫版本比較老,貿貿然更新版本對項目影響比較大,時間又很緊,這里有一個暫時的解決辦法。但是最終項目還是要更新依賴庫的。
解決方案
在Xcode中添加stdc++.6.0.9文件
文件下載
添加文件
解壓下載后的文件,cd到解壓文件目錄,直接編譯install.sh,編譯后重啟Xcode即可。真機和模擬器均可正常運行
./install.sh
####文件下載
stdc++.6.0.9下載鏈接:https://pan.baidu.com/s/1s8-DJ1l6jtOTi9-nkiIPmQ 密碼: avet
文件下載后解壓,并解壓模擬器目錄和真機目錄下的文件
####文件添加
#####模擬器添加
在終端輸入
>open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
打開Xcode的模擬器目錄,將解壓后模擬器目錄下的libstdc++.6.0.9.tbd文件copy到Xcode的模擬器目錄usr/lib下
#####真機添加
~~在終端輸入
>open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
打開Xcode的真機目錄,將解壓后真機目錄下的libstdc++.6.0.9.tbd文件copy到Xcode的真機目錄usr/lib下
重啟Xcode,重新運行app即可
####注意
如果Xcode是12以上版本,注意還是不要使用模擬器運行app了,還是使用真機運行吧。我這里雖然這樣處理了,模擬器運行還是會報這個錯,真機運行還可以。