gcc编译cpp文件 出现undefined reference to `__gxx_personality_v0'

 在linux编写程序如下

#include 
#include 
#include 
int count=0;
void ctrl_c_count(int);
main()
{
int c;
void (*old_handler)(int);
old_handler=signal(SIGINT,ctrl_c_count);
while((c=getchar()!='/n'))
;
printf("Ctrl_C count=%d/n",count);
signal(SIGINT,old_handler);

}
void ctrl_c_count(int i)
{
printf("Ctrl_C/n");
count++;
}


这个程序的功能是研究signal函数的应用.
signal 函数是用于设置信号量的处理函数为自定义的。
SIGINT是用户在终端上按下ctrl+c的而产生信号量
它的系统默认的处理函数为终止正运行的进程
现在把它改成按ctrl+c后,是全局变量count加1的操作
当用户在终端输入回车后该进程结束。
且又把SIGINT的处理函数为默认的。

当我把上述程序保存为t.cpp时
利用gcc -o t t.cpp
产生如下错误
/tmp/ccGsoxH2.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
解决方法用 gcc -o t t.cpp -lstdc++
为什么会出现这个错误:是因为你用gcc编译.cpp文件.按系统默认.cpp文件是c++的文件格式
另一个方法是用g++ -o t t.cpp 也是可以的
还有一种方法是把文件保存为.c格式,反正里面全是c的代码
然后用gcc -o t t.c或者是g++ -o t t.c 都是OK的

/usr/bin/ld: summinfo.cpp:(.text._ZN11xlslib_core10hpsf_doc_t7addItemEty[_ZN11xlslib_core10hpsf_doc_t7addItemEty]+0x59): undefined reference to `operator delete(void*)' /usr/bin/ld: ../../src/.libs/libxls.a(summinfo.o):(.rodata._ZTIN11xlslib_core12CSummaryInfoE[_ZTIN11xlslib_core12CSummaryInfoE]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info' /usr/bin/ld: ../../src/.libs/libxls.a(summinfo.o):(.eh_frame+0x13): undefined reference to `__gxx_personality_v0' /usr/bin/ld: ../../src/.libs/libxls.a(colinfo.o): in function `xlslib_core::CColInfo::~CColInfo()': colinfo.cpp:(.text+0x192): undefined reference to `operator delete(void*)' /usr/bin/ld: ../../src/.libs/libxls.a(colinfo.o): in function `__static_initialization_and_destruction_0(int, int)': colinfo.cpp:(.text+0x1bf): undefined reference to `std::ios_base::Init::Init()' /usr/bin/ld: colinfo.cpp:(.text+0x1ce): undefined reference to `std::ios_base::Init::~Init()' /usr/bin/ld: ../../src/.libs/libxls.a(colinfo.o):(.rodata._ZTIN11xlslib_core8CColInfoE[_ZTIN11xlslib_core8CColInfoE]+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info' /usr/bin/ld: ../../src/.libs/libxls.a(colinfo.o):(.eh_frame+0x4b): undefined reference to `__gxx_personality_v0' /usr/bin/ld: ../../src/.libs/libxls.a(continue.o): in function `xlslib_core::CContinue::~CContinue()': continue.cpp:(.text+0x116): undefined reference to `operator delete(void*)' /usr/bin/ld: ../../src/.libs/libxls.a(continue.o): in function `__static_initialization_and_destruction_0(int, int)': continue.cpp:(.text+0x143): undefined reference to `std::ios_base::Init::Init()' /usr/bin/ld: continue.cpp:(.text+0x152): undefined reference to `std::ios_base::Init::~Init()' /usr/bin/ld: ../../src/.libs/libxls.a(continue.o):(.rodata._ZTIN11xlslib_core9CContinueE[_ZTIN11xlslib_core9CContinueE]+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info' /usr/bin/ld: ../../src/.libs/libxls.a(continue.o):(.eh_frame+0x6b): undefined reference to `__gxx_personality_v0' collect2: error: ld returned 1 exit status make[2]: *** [Makefile:590:testC] 错误 1 make[2]: 离开目录“/home/zhu/桌面/xlslib/xlslib/targets/test” make[1]: *** [Makefile:322:all-recursive] 错误 1 make[1]: 离开目录“/home/zhu/桌面/xlslib/xlslib/targets” make: *** [Makefile:418:all-recursive] 错误 1 make xlslib出现的
03-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值