我想今天的问题是Mac上默认的“哪个” C ++编译器?
如果我这样做,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++
和一个新的和现代的LLVM libc++
。
随着MacOS的10.12塞拉利昂的,默认的是现在libc++
和libstdc++
已经过时了。libstdc++
v4.2.1相当老,并且早于C ++ 11(因此tr1
标头)。如果您要长期使用此代码,则值得花时间使其至少符合C ++ 11(例如#include <unordered_map>
)
更新:Xcode 10不再允许针对libstdc ++进行构建。更新您的代码库以使用标准的C ++ 11标头,或者如果确实没有选择,请使用Xcode 9。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句