链接错误 "undefined reference to `__gxx_personality_v0'" 和 g++

Link error "undefined reference to `__gxx_personality_v0'" and g++

本文关键字:v0 g++ personality gxx reference undefined to 链接 错误      更新时间:2023-10-16

可能的重复项:
链接上的未定义符号___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++