我想当天的问题是"" c ++编译器是mac的默认设置吗?
如果我xcrun -find c++
它会在/Applications/Xcode.app/etc...
中说出来。
当我在Xcode目录中搜索tr1/unordered_map
时,它就在那里。
所以我很困惑。为什么我收到fatal error: 'tr1/unordered_map' file not found
的构建错误?
答案 0 :(得分:19)
简答:使用-stdlib=libstdc++
调用clang ++,tr1
标题将在那里。
答案很长:
你的错误和2套C ++包含的原因是macOS / Xcode有两个不同的C ++标准库你可以构建:旧的GNU libstdc++
,以及新的和现代的LLVM libc++
。 / p>
自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,如果这不是一个选项。