将Xcode版本更新为10.0 beta后,开始出现“ ld:找不到用于-lstdc ++。6的库”错误。相同的代码在Xcode 9.2中可以正常工作
还将macOS更新为10.13.5
答案 0 :(得分:12)
定位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)。项目依赖项,例如针对其构建的静态档案 还需要针对libc ++重建libstdc ++。 (40885260)
来源:Release Notes of XCode Beta 2
侧面说明:
您需要登录才能访问该页面。
链接可能会在下一个beta版本中中断(URL更改),但是它在Developers / Download部分中
XCode 10与其release note一起正式发布,仍然如此:
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)
答案 1 :(得分:10)
快速的解决方案是将所有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.platform/Developer/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.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib /
答案 2 :(得分:5)
如上所述,lstdc ++已从Xcode 10中删除。要解决此问题,
转到目标-> BuildPhases->将二进制文件与库链接
搜索lstdc ++并将其删除。
现在在使用上述“ lstdc ++”库的某些框架中可能会出现错误。现在,您必须更新或删除这些框架,以便Xcode可以成功构建它。
答案 3 :(得分:3)
CXXFLAGS += -stdlib=libc++
您的外部库Makefile和-stdlib=stdlibc++
的已删除实例
答案 4 :(得分:0)
当我尝试进行make install
时,这对我来说是失败的。相反,我运行了make install -stdlib=libc++
,成功了。
答案 5 :(得分:0)
我试图编译 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
在 fixing-cpp-compilation-bugs-for-the-mac-os-catalina-upgrade 的精彩演练
答案 6 :(得分:-1)
只需进行构建设置,将二进制文件与库链接,然后将其删除即可。它解决了我的问题。