链接错误 "undefined reference to `__gxx_personality_v0'" 和 g++
Link error "undefined reference to `__gxx_personality_v0'" and 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
当我想在任何地方使用该功能时,我得到:
(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
如何解决这个问题?(我使用的是 Ubuntu Linux。
如果g++
仍然给出错误 尝试使用:
g++ file.c -lstdc++
看看这篇文章:__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++