错误 __gxx_personality_v0 的解决方法

(一)注意:是c程序。
很不幸地,我遭遇这个问题让我花去了一两个小时去找它的原因。在VC甚至TC2.0下编译都没有什么问题的c代码,到了gcc就出了这么一条错误,实在是让人郁闷。

网上查了一下,没解决问题。只知道“__gxx_personality_v0”的错误信息表示试图用gcc编译c++的代码而产生错误。网上给出的解决 方案多是在编译时加上“-lstdc++”参数,也就是把gcc当作g++来用。但这显然不是我想要的,加上“-lstdc++”参数编译出的目标文件几 乎肥了一倍,没理由一个c程序偏按c++编译。我仔细检查,程序中并没有什么c++的代码;而且c++的代码大概也通不过TC2.0吧。于是乎,就无可救 药地再次开始怀疑编译器,唉……最后在博客oliliango.cublog.cn的一篇文章上找到了答案:“__gxx_personality_v0 这样的编译错误,是由于源代码的文件后缀名和代码的语法不相符合,比如用C的语法的文件,选择了cpp这样的后缀名(或者<大写C>这样的后 缀名)”。一检查,果然,因为源代码使用TC编辑过,所以文件名全转换成了大写,所以就出毛病了。

(二)

1. Linux Develop Notes
编译 c++ 程序需要添加 -lstdc++ sample: gcc -lstdc++ -o test test.c,否则会报 "undefinedreference to '__gxx_personality_v0' " 错误

2. 唉,用gcc命令编译C程序,用g++命令编译C++程序。
g++和gcc本质一样的,本质上还是gcc,我们实验室所有的c++程序都是用gcc编译的,一般的程序用gcc足够了。 对于 C++ 程序,编译的时候用 gcc 或者 g++ 都可以。但是在进行连接的时候最好用 g++,因为用 g++ 会自动进行 C++ 标准库的连接;用 gcc 连接 C++ 程序也可以,但是需要人为指定连接 C++ 标准库,否则就会出现 undefined reference to `__gxx_personality_v\0' 之类的错误。

可见-lstdc++ 所对应的是标准C++库。

原文链接: https://www.cnblogs.com/RichardLee/archive/2012/02/15/2352998.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    错误 __gxx_personality_v0 的解决方法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/41699

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午6:31
下一篇 2023年2月8日 下午6:32

相关推荐