【iOS】Xcode10 libstdc++.6.0.9.tbd not found解決方案

為什么會(huì)報(bào)錯(cuò)

Apple大約在五年前就聲明即將廢棄libstdc++相關(guān)c++ lib,只不過(guò)到Xcode10才正式不再支持。
實(shí)際上目前絕大數(shù)項(xiàng)目和第三方庫(kù)早已不依賴stdc++,一般出這個(gè)問(wèn)題的都是比較老的項(xiàng)目或者依賴了較老版本的第三方庫(kù)導(dǎo)致。

如何解決

臨時(shí)解決方案(不推薦)

編譯時(shí)報(bào)not found libstdc++.6.0.9.tbd not found,是因?yàn)閄code10沒(méi)有這個(gè)庫(kù),我們可以從低版本的Xcode中拷貝一份過(guò)來(lái)。
模擬器路徑為 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
真機(jī)路徑為
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib

把此文件拷貝到Xcode10對(duì)應(yīng)路徑即可

此方案能夠保證代碼正常運(yùn)行在真機(jī)以及iOS11以下的模擬器上,不支持對(duì)iOS12的模擬器進(jìn)行調(diào)試。而且,本身這種做法屬于強(qiáng)行使用libstdc++,除非有一些很重要的庫(kù)無(wú)法及時(shí)替換,否則不太推薦

正式解決方案(推薦)

刪除項(xiàng)目中引用的libstdc++和libstdc++.6.0.9.tbd,如果有第三方框架依然依賴libstdc++,請(qǐng)嘗試更新庫(kù),如果更新也不行,請(qǐng)聯(lián)系提供方或者更換別的庫(kù)使用。

如何知道哪些庫(kù)依賴了libstdc++?

這是很多人比較疑惑的一點(diǎn),也沒(méi)有人做過(guò)相關(guān)解答,因?yàn)榫幾g器只會(huì)告訴你找不到libstdc++,并沒(méi)有說(shuō)是哪些庫(kù)用到了這個(gè)。此處提供一個(gè)辦法給大家:

使用pod集成的第三方庫(kù)

請(qǐng)打開(kāi)項(xiàng)目路徑下的pod文件夾,找到Pod.xcodeproj文件,右鍵顯示包內(nèi)容,然后用文本編輯打開(kāi)project.pbcproj文件。

image.png

然后在文本中全局搜索 libstdc++.6.0.9 和 libstdc++,刪除所有匹配結(jié)果,然后CMD+S保存

手動(dòng)導(dǎo)入的第三方庫(kù)

找到工程文件XXXX.xcodeproj,右鍵顯示包內(nèi)容,讓然后用文本編輯打開(kāi)project.pbcproj文件。
然后在文本中全局搜索 libstdc++.6.0.9 和 libstdc++,刪除所有匹配結(jié)果,然后CMD+S保存

然后返回Xcode,CMD+B編譯,如果直接編譯成功,說(shuō)明你的項(xiàng)目并不依賴stdc++,可能是以前的三方庫(kù)的依賴忘了刪除,或者第三方庫(kù)更新過(guò)自己的依賴。
如果編譯失敗,則會(huì)有對(duì)應(yīng)的報(bào)錯(cuò)信息告訴你是哪個(gè)庫(kù)缺少依賴,然后就更新對(duì)應(yīng)的庫(kù)就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容