【发布时间】:2013-02-11 18:27:13
【问题描述】:
我有一个简单的、有代表性的 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
正如been discussed 之前在 C++ 的上下文中一样,这个问题出现在链接阶段,当 gcc 尝试将 C 库链接到 C++ 程序时,会出现错误。在one of the answers 中,有人提到扩展名确实 很重要,并且gcc 在编译C 文件时需要.c 扩展名,在编译C++ 文件时需要一些其他扩展名(例如.cpp)。
问题:我如何设置 gcc 以使用文件扩展名来确定要使用的编译器,因为 gcc 在我的系统上似乎默认为 C++?仅通过文件扩展名指定语言似乎是不够的。如果我使用-x 标志指定语言,gcc 将按预期运行。
gcc -x c hello.c
【问题讨论】: