我想今天的问题是“哪个”c++ 编译器是 mac 上的默认编译器?
If I do xcrun -find c++
它说它在/Applications/Xcode.app/etc...
.
当我搜索 Xcode 目录时tr1/unordered_map
, 在那。
所以我很困惑。为什么我会收到这样的构建错误:fatal error: 'tr1/unordered_map' file not found
?
简短回答:调用 clang++ 与-stdlib=libstdc++
,以及tr1
标题将会在那里。
长答案:你的错误和 2 套 C++ 包含的原因是 macOS/Xcode 有两个不同的 C++ 标准库,你可以构建:一个旧的 GNUlibstdc++
,以及新的和现代的 LLVMlibc++
.
从 macOS 10.12 Sierra 开始,默认值为libc++
and libstdc++
已弃用。libstdc++
已经很老了,v4.2.1,并且早于 C++11(因此tr1
标题)。如果您打算长期使用此代码,那么至少值得花时间使其符合 C++11 标准(即#include <unordered_map>
)
Update:Xcode 10 不再允许针对 libstdc++ 进行构建。更新您的代码库以使用标准 C++11 标头,或者使用 Xcode 9(如果确实无法选择)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)