Ошибка связи "undefined ссылка на` __gxx_personality_v0 '" и g++

Возможный дубликат:
Undefined Символ ___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.)

Ответ 1

Если g++ все еще дает ошибку Попробуйте использовать:

g++ file.c -lstdc++

Посмотрите на это сообщение: Что такое __gxx_personality_v0 для?

Убедитесь, что -lstdc++ находится в конце команды. Если вы поместите его в начале (то есть перед файлом .c), вы все равно можете получить эту же ошибку.

Ответ 2

Похоже, вы пытаетесь связать свой результирующий объектный файл с gcc вместо g++:

Обратите внимание, что программы, использующие объект С++ файлы всегда должны быть связаны с g++, для обеспечения соответствующего С++ библиотеки. Попытка связать С++ объектный файл с компилятором C gcc приведет к "undefined ссылке" ошибки для стандартной библиотеки С++ Функции:

$ 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++