[英]mac c++ compiler not finding <tr1/unordered_map>
我想今天的问题是“哪个”C++ 编译器是 mac 上的默认编译器?
如果我做xcrun -find c++
它说它在/Applications/Xcode.app/etc...
。
当我在 Xcode 目录中搜索tr1/unordered_map
,它就在那里。
所以我很困惑。 为什么我会收到一个构建错误,提示fatal error: 'tr1/unordered_map' file not found
?
简短回答:使用-stdlib=libstdc++
调用 clang++ ,并且tr1
标头将在那里。
长答案:您的错误和 2 套 C++ 包括的原因是 macOS/Xcode 有两个不同的 C++ 标准库,您可以针对它进行构建:旧的 GNU libstdc++
和新的现代 LLVM libc++
。
从 macOS 10.12 Sierra 开始,默认值现在是libc++
而libstdc++
已弃用。 libstdc++
很旧,v4.2.1,早于 C++11(因此tr1
头文件)。 如果您打算长期使用此代码,那么至少值得花时间使其符合 C++11(即#include <unordered_map>
)
更新:Xcode 10 不再允许针对 libstdc++ 进行构建。 要么更新你的代码库以使用标准的 C++11 头文件,要么使用 Xcode 9,如果这真的不是一个选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.