2011-06-07 160 views
2

我在Ubuntu环境下使用gcc编译器编写了一个简单的C程序。代码很简单。不管怎样,当我尝试编译时,它给出了一个我无法理解的错误。下面是代码和错误编译* .cc文件时出现Gcc编译错误

# include <stdio.h> 
int main() { 
    enum mar_status { 
    single,married,divorced 
    }; 
    enum mar_status person1,person2; 
    person1 = single; 
    printf("%d\n",person1); //line B 
} 

我收到以下错误,当我编译

gcc enum2.cc 
/tmp/cc6stgaW.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status 

如果我删除了printf语句在B线,一切顺利。关于编辑失败的任何想法?

+0

请缩进您的代码... – 2011-06-07 08:27:15

回答

4

您正在使用gcc编译C++代码吗? (.cc扩展名)

将文件重命名为enum2.c或使用g++进行编译。

1

你感到困惑的编译器 - 当你说:

gcc enum2.cc 

它认为你正在编译C++代码,但你正在用gcc,不链接正确的C++库这样做。使用:

gcc enum2.c 
2

对内部运行时库函数(如__gxx_personality_v0)的未定义引用也是链接C++对象文件与gcc而不是g ++的症状。

将文件扩展名从.cc或.cpp更改为.c将解决该问题。