Ошибка связи "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++