繁体   English   中英

mac c++编译器找不到<tr1/unordered_map>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM