我有一个用于macOS和Linux的Makefile,其中包含以下命令:
cc -std=c++14 foo.cpp bar.cpp
它编译良好。顾名思义,foo.cpp
和bar.cpp
是C ++文件,并且包含C ++ 11语法。编译正常。
现在,如果包含<fstream>
,我将收到数百个链接器错误。我想知道,为什么呢?
Undefined symbols for architecture x86_64:
"std::__1::locale::has_facet(std::__1::locale::id&) const", referenced from:
bool std::__1::has_facet<std::__1::codecvt<char, char, __mbstate_t> >(std::__1::locale const&) in DiceInvaders-6f5dd4.o
"std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
...
Afaik,cc
链接到c编译器,由于它是自动检测的,所以我认为它是使用C ++编译器编译的。但是为什么它在附加的C ++ include中失败了?
系统上是否有cc
的{{1}}对应项?如果我使用c++
,我会假定该命令可用,并且如果用户实际上想使用他的首选编译器(如cc)进行编译怎么办?
编辑:g++
是$(CXX)
的良好替代品吗?
答案 0 :(得分:1)