链接错误“未定义的引用`__gxx_personality_v0'”和g ++

可能重复:
链接上的未定义符号___gxx_personality_v0

我遇到以下程序的问题。

// fkt.cpp #include "fkt.h" int add2(int a, int b) { return a+b; } 

和标题:

 // fkt.h int add2(int a, int b); 

现在我编译这个:

 g++ -c fkt.cpp 

现在我运行nm并得到:

 00000000 T _Z6add2ii U __gxx_personality_v0 

当我想在任何地方使用该function时:

 (.eh_frame+0x12): undefined reference to `__gxx_personality_v0' 

我怎么解决这个问题? (我正在使用Ubuntu Linux。)

如果g++仍然给错误尝试使用:

 g++ file.c -lstdc++ 

看看这个post: 什么是__gxx_personality_v0?

确保-lstdc++在命令的末尾。 如果你把它放在开头(即在file.c之前),你仍然可以得到这个相同的错误。

这听起来像你正在尝试与gcc而不是g++链接你的结果对象文件:

请注意,使用C ++对象文件的程序必须始终与g ++链接,以便提供适当的C ++库。 尝试将C ++对象文件与C编译器链接gcc将导致C ++标准库函数的“未定义引用”错误:

 $ g++ -Wall -c hello.cc $ gcc hello.o (should use g++) hello.o: In function `main': hello.o(.text+0x1b): undefined reference to `std::cout' ..... hello.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' 

资料来源: GCC简介 – GNU编译器gcc和g ++