在Xcode9上正常編譯的項(xiàng)目,在Xcode10上編譯可能會(huì)遇到如下錯(cuò)誤:
library not found for -lstdc++.6.0.9
library not found for -lstdc++.6
library not found for -lstdc++
這是因?yàn)閄code10徹底廢棄了libstdc++鸠匀,相關(guān)的庫(kù)文件libstdc++.6.0.9.dylib亚隅、libstdc++.6.dylib、libstdc++.dylib倍奢、libstdc++.6.0.9.tbd朴上、libstdc++.6.tbd、libstdc++.tbd也從Xcode10中刪除了卒煞。
最好的解決辦法還是盡快轉(zhuǎn)到libc++開(kāi)發(fā)
如果還想要繼續(xù)在Xcode10上編譯依賴libstdc++的項(xiàng)目或庫(kù)痪宰,可以通過(guò)把Xcode9中的libstdc++相關(guān)庫(kù)文件復(fù)制到Xcode10中即可。
在Xcode9中搜索libstdc++相關(guān)的庫(kù)畔裕,可以找到四個(gè)相關(guān)的文件:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libstdc++.6.0.9.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libstdc++.6.0.9.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.6.0.9.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.6.0.9.tbd
但是只找到了libstdc++.6.0.9.dylib和libstdc++.6.0.9.tbd衣撬,找不到libstdc++.6.dylib、libstdc++.dylib扮饶、libstdc++.6.tbd具练、libstdc++.tbd,前往找到的這4個(gè)路徑中會(huì)就會(huì)發(fā)現(xiàn)libstdc++.6.dylib甜无、libstdc++.dylib是libstdc++.6.0.9.dylib的替身扛点,libstdc++.6.tbd、libstdc++.tbd是libstdc++.6.0.9.tbd的替身:
libstdc++.6.0.9.dylib
libstdc++.6.0.9.tbd
所以我嘗試將libstdc++.6.0.9.dylib和libstdc++.6.0.9.tbd復(fù)制到Xcode10中毫蚓,并制作libstdc++.6.dylib占键、libstdc++.dylib、libstdc++.6.tbd元潘、libstdc++.tbd這四個(gè)替身文件畔乙,但是在模擬器上運(yùn)行崩潰,自己制作替身的方案不可行翩概,然后我改為了制作副本的方式成功在模擬器上運(yùn)行牲距。
libstdc++.6.0.9.dylib和libstdc++.6.0.9.tbd以及制作好的副本libstdc++.6.dylib返咱、libstdc++.dylib、libstdc++.6.tbd牍鞠、libstdc++.tbd下載地址點(diǎn)這里
如何在Xcode 11以及iOS 13上運(yùn)行咖摹?
Xcode 11相對(duì)Xcode 10存放.dylib文件的路徑有變化,我在GitHub上增加了一個(gè)Xcode 11的腳本难述。根據(jù)自己使用的Xcode版本選擇相對(duì)應(yīng)的腳本即可萤晴。