iOS-Xcode暫時解決libstdc++問題

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文件

文件下載

下載Xcode10中刪除的libstdc++庫

添加文件

解壓下載后的文件,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了,還是使用真機運行吧。我這里雖然這樣處理了,模擬器運行還是會報這個錯,真機運行還可以。

所以,有時間還是要更新項目中實際使用libstdc++的代碼的。第三方庫也是要更新的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容