undefined reference to `__gxx_personality_v0'

97 篇文章 7 订阅

undefined reference to `__gxx_personality_v0'


刚刚在做一个实验,编译的时候出了一点问题,下面附上代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

static void my_exit1(void);
static void my_exit2(void);

int
main(void)
{
	if (atexit(my_exit2) != 0)
		printf("can not register my_exit2\n");
	
	if (atexit(my_exit1) != 0)
		printf("can not register my_exit1\n");
	if (atexit(my_exit1) != 0)
		printf("can not register my_exit1'=\n");
	
	printf("main is done\n");
	return(0);
}

static void
my_exit1(void)
{
	printf("first exit handler\n");
}

static void
my_exit2(void)
{
	printf("second exit handler\n");
}

检查了很多遍发现没啥问题呀,但是用以下编译语句时报错:

gcc -o main main.C

报错信息如下:

/tmp/ccAi9DGt.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld 返回 1

后来查找资料后得知,这里我用的是gcc来编译的,源文件却是.C(实际内容是c),实际.C代表着是c++的源文件,额,就报错了。

解决办法(改成c文件后缀即可):

mv main.C main.c
gcc -o main main.c

编译通过。

网上还有别的类似的编译错误,这里留个mark,以后发现类似的再来这里总结下~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值