libstdc++,libstdc++.6.0.9缺失适配Xco

2018-10-18  本文已影响0人  ForstDragon

编译报错

报错信息.png

开心得升级完新 macOS,以及新 XCode,准备体验了一把 Dark Mode 编程模式,开心的打开自己的老项目的时候,发现编译不通过了,报错,


发现缺失爆红.png

工程中如果依赖 libstdc++,无论是你本身的功能用 C++ 跨平台编写,还是你引入了某个 SDK 其内部依赖这个 libstdc++,都会导致整个工程编译不通过,报出 Undefined symbols,C++ 的 List 找不到了,
原因是苹果在 XCode10 和 iOS12 中移除了 libstdc++ 这个库,由 libc++ 这个库取而代之,苹果的解释是 libstdc++ 已经标记为废弃有5年了,建议大家使用经过了 llvm 优化过并且全面支持C++11的 libc++ 库。

临时解决办法

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

现在 XCode10 正式发布了,很多人已经没有 XCode9 来拷贝了,于是这里放出来文件提供下载

libstdc++.6.0.9.tbd.zip 解压,放到目录

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

查看是否存在.png

拷贝过去后,你就可以在新 XCode(黑暗模式真心舒服)下面看到libstdc++了,放心的添加到工程里吧

  1. libstdc++_sim.zip 解压,放到目录
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

  1. libstdc++.dylib_sim.zip 解压,放到目录
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/

正确解决办法

libc++

Apple 为什么在 Mavericks 里把 C++ 标准库从 libstdc++ 改成 libc++?

关于此问题的讨论

Xcode10和iOS12踩坑

ps : 参考

折腾范儿の味精

libstdc++适配Xcode10与iOS12

上一篇 下一篇

猜你喜欢

热点阅读