将 Xcode 版本更新到 10.0 beta 后,开始出现“ld: library not found for -lstdc++.6”错误。相同的代码在 Xcode 9.2 中运行良好
还将 macOS 更新到 10.13.5
定位 iOS App 时会遇到此问题。它在发行说明中说明:
弃用通知:
Xcode 8 已弃用使用 libstdc++ 构建,并且在以 iOS 为目标时,Xcode 10 不支持。C++ 项目现在必须迁移到 libc++,建议设置 iOS 7 或更高版本的部署目标。除了更改 C++ 标准库构建设置外,开发人员还应审核硬编码的链接器标志和目标依赖项以删除对 libstdc++ 的引用(包括 -lstdc++、-lstdc++.6.0.9、libstdc++.6.0.9.tbd 和 libstdc++.6.0。 9.dylib)。项目依赖项(例如针对 libstdc++ 构建的静态档案)也需要针对 libc++ 重新构建。(40885260)
旁注:
您需要登录才能访问该页面。
链接可能会在下一个 beta 版本中中断(URL 更改),但它位于开发人员/下载部分
XCode 10 正式发布了它的发行说明,它仍然是这样的:
Xcode 8 已弃用使用 libstdc++ 构建,并且在以 iOS 为目标时,Xcode 10 不支持。C++ 项目现在必须迁移到 libc++,并且建议将部署目标设置为 macOS 10.9 或更高版本,或者 iOS 7 或更高版本。除了更改 C++ 标准库构建设置外,开发人员还应审核硬编码的链接器标志和目标依赖项以删除对 libstdc++ 的引用(包括 -lstdc++、-lstdc++.6.0.9、libstdc++.6.0.9.tbd 和 libstdc++.6.0。 9.dylib)。项目依赖项(例如针对 libstdc++ 构建的静态档案)也需要针对 libc++ 重新构建。(40885260)
快速的解决方案是将所有 libstdc++.* 文件从旧 Xcode(9.4) 复制到新 Xcode(10.x)
对于设备:
cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode10.app/Contents/Developer/Platforms/iPhoneOS。平台/开发者/SDKs/iPhoneOS.sdk/usr/lib/
对于模拟器:
cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode10.app/Contents/Developer/Platforms/iPhoneSimulator。平台/开发者/SDKs/iPhoneSimulator.sdk/usr/lib/
如上所述,lstdc++ 已从 Xcode 10 中删除。要解决此问题,
转到目标 -> 构建阶段 -> 将二进制文件与库链接
搜索 lstdc++ 并将其删除。
现在,您可能会在使用上述“lstdc++”库的某些框架中遇到错误。现在你要么更新那些框架,要么删除它,这样 Xcode 才能成功构建它。
CXXFLAGS += -stdlib=libc++
您的外部库 Makefile 和删除的实例-stdlib=stdlibc++
当我尝试做一个make install
. 相反,我跑了make install -stdlib=libc++
,这成功了。
我试图编译 C 程序并得到ld: library not found for -lc++
由于提到的弃用以及告诉 C++ 从旧的 mac sdk 读取的解决方法/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk
# adjust your llvm and CLT include paths to match your setup
export CPLUS_INCLUDE_PATH=/usr/local/opt/llvm/include/c++/v1:/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include
# then set correct var for compiler lib
export LIBRARY_PATH=$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib
fix -cpp-compilation-bugs-for-the-mac-os-catalina-upgrade 的精彩演练
只需转到构建设置,将二进制文件与库链接,然后将其删除。它解决了我的问题。