我有一个简单的、有代表性的 C 程序,存储在一个名为hello.c
:
#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++ 的上下文中所 讨论的,这个问题出现在链接阶段,当 gcc 尝试将 C 库链接到 C++ 程序时,会出现错误。在其中一个答案中,有人提到扩展名确实很重要,并且 gcc.c
在编译 C 文件时需要扩展名,而在编译 C++ 文件时需要一些其他扩展名(例如.cpp
)。
问题:我如何设置 gcc 以使用文件扩展名来确定使用哪个编译器,因为 gcc 在我的系统上似乎默认为 C++?仅通过文件扩展名指定语言似乎是不够的。如果我使用-x
标志指定语言,gcc 会按预期运行。
gcc -x c hello.c