library not found for -lstdc++.6.0.9

Xcode升级至10.0后运行工程出现错误提示:library not found for -lstdc++.6.0.9

问题排查

别慌首先我们去备份机器中打开老的Xcode 9.x查找这个库是否是系统自带的,选择添加新库进行查找,如下图所示。如果没有请直接看临时解决办法。

可以确定该库为系统自带,而新的Xcode根据错误提示是没有该库,那我们就手动移植过去,根据上图提示,打开终端进入库的位置,直接拷贝至新Xcode来解决问题。

解决办法

  1. 拷贝旧Xcode中的库。没有的可以直接去这里下载地址GitHub
  • 真机路径

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOSxxx.sdk/usr/lib

  • 模拟器路径
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulatorxxx.sdk/usr/lib
  1. 添加至Xcode10.0中。
  • 真机路径

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/usr/lib

  • 模拟器路径
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk/usr/lib

替换完成后在模拟器iOS10.0以上运行会出现一个错误:

 Reason: no suitable image found.  Did find:
     /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator

这里还需要拷贝旧Xcode中的/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并改名为libstdc++.6.dylib后粘贴到新Xcode同样的位置。(注意在/Profiles/Runtimes/iOS.simruntime这里时需要右键显示包内容)

注意这里xxx.sdk根据上图Xcode提示的来

推荐阅读更多精彩内容