我在Ubuntu环境中使用gcc编译器编写了一个简单的C程序。代码很简单。但是,当我尝试编译时,它给出了一个我无法理解的错误。这是代码和错误
# 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
如果我在B行删除了printf语句,一切都很顺利。关于为什么编译失败的任何想法?
答案 0 :(得分:4)
您正在使用gcc编译C ++代码? (.cc
扩展名)
将文件重命名为enum2.c
或使用g++
进行编译。
答案 1 :(得分:2)
对内部运行时库函数的未定义引用(例如__gxx_personality_v0)也是将C ++目标文件与gcc而不是g ++链接的症状。
将文件扩展名从.cc或.cpp更改为.c将解决此问题。
答案 2 :(得分:1)
当你说:
时,你会混淆编译器 gcc enum2.cc
它认为你正在编译C ++代码,但你是用gcc做的,它没有链接正确的C ++库。使用:
gcc enum2.c
答案 3 :(得分:1)
它运行良好。检查:http://ideone.com/bhjlf
我猜你的编译命令是错误的。