Неопределенный символ ___gxx_personality_v0 по ссылке

StackOverflow https://stackoverflow.com/questions/203548

  •  03-07-2019
  •  | 
  •  

Вопрос

Я получаю это неопределенное здание символа с помощью этой командной строки:

$ gcc test.cpp
Undefined symbols:
  "___gxx_personality_v0", referenced from:
  etc...

test.cpp прост и должен работать нормально.В чем дело?

Это было полезно?

Решение

Использовать

g++ test.cpp

вместо этого, поскольку это код C++.


Или, если вы Действительно хочу использовать gcc, добавлять -lstdc++ в командную строку, вот так:

gcc test.cpp -lstdc++

Бег md5 против a.out полученные по каждому сценарию, показывают, что это один и тот же результат.

Но да, g++ вероятно, делает ваш мир проще.

Другие советы

А .cpp причины расширения gcc чтобы скомпилировать ваш файл как файл C++.(См. Документы GCC.)

Попробуйте скомпилировать тот же файл, но переименуйте его, чтобы он имел .c расширение:

mv test.cpp
gcc test.c

Альтернативно вы можете явно указать язык, передав -x c компилятору:

gcc -x c -c test.cpp -o test.o

Если ты бежишь nm test.o в этих версиях языка C вы заметите, что ___gxx_personality_v0 не указан как символ.
(И если вы запустите ту же команду для объектного файла, созданного с помощью gcc -c test.cpp -o test.o, ___gxx_personality_v0 символ присутствует.)

На всякий случай у кого-то такая же проблема, как у меня:Расширение файла должно быть .c не .C (gcc чувствителен к регистру).

Была та же проблема, но другое решение:

Код C++ в статической библиотеке связывается и на него ссылается файл .m.Переименование файла .m в .mm устранило проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top