链接错误“未定义的引用`__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 ++