我有一个简单的,有代表性的C程序,保存在一个名为hello.c
:如何设置gcc使用文件扩展名(.c或.cpp)来确定正确的编译器/链接器?
#include <stdio.h>
int main(void)
{
printf('Hello, world\n');
return 0;
}
在我的Linux机器,我试图用gcc来编译程序:
gcc hello.c
返回一个错误:
undefined reference to "___gxx_personality_v0" ... etc
如之前在C++中的上下文beendiscussed有,这个问题在出现当gcc尝试将C库链接到一个C++程序时,这会产生错误。在one of the answers中,有人提到扩展确实是问题,并且gcc在编译C文件时需要扩展.c
,并且在编译C++文件时需要其他扩展(例如.cpp
)。
问题:如何设置gcc使用文件扩展名来确定使用哪个编译器,因为gcc似乎默认为我的系统上的C++?单独通过文件扩展名指定语言似乎不够。如果我使用-x
标志指定语言,则gcc按预期运行。
gcc -x c hello.c
没有看见你的编辑之前,我贴我的最后意见(这处理make的隐式规则)。我不打算在这个项目中混用C和C++,但这仍然有助于了解。 – 2013-02-11 18:33:26
@RicardoAltamirano,我想大约有一百万SO用户会回答这个问题,所以我冲上去放了一个占位符。 :-) – 2013-02-11 18:35:22
哎呀,那很明显?显然C不是我的专长。 – 2013-02-11 18:36:19