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

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

$ 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 

Кроме того, вы можете явно указать язык, передав -xc компилятору:

 gcc -xc -c test.cpp -o test.o 

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

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

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

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

  • Заказ локального распределения переменных в стеке
  • Массив размером 0
  • Сведения о создании шаблона компиляторов GCC и MS
  • Как удалить неиспользуемые символы C / C ++ с помощью GCC и ld?
  • В чем разница между «asm», «__asm» и «__asm__»?
  • Как установить путь выполнения (-rpath) исполняемого файла с помощью gcc в Mac OSX?
  • Улучшенный REP MOVSB ​​для memcpy
  • явная специализация функции члена classа шаблона
  • GCC, строение и встроенный GLSL?
  • Порядок оценки инициализации списка конструктора
  • C неопределенное поведение. Строгое правило сглаживания или неправильное выравнивание?
  • Interesting Posts

    Ошибка 1064 в CREATE TABLE … TYPE = MYISAM

    Как конвертировать WinXP + Apps на RAID0, чтобы использовать только один из двух дисков RAID?

    .Net и Bitmap не автоматически удаляются GC, когда нет памяти

    Как получить использование ЦП в C #?

    Как $ HTTP Синхронный вызов с помощью AngularJS

    Google App Engine: возможно ли выполнить запрос Gql LIKE?

    withFile vs. openFile

    Angular2: Как использовать несколько экземпляров одного и того же сервиса?

    Удаленный рабочий стол оставляет хозяина невосприимчивым

    Как отключить восстановление жесткого диска из режима сна при выключении

    Как я могу назвать один конструктор из другого в Java?

    В чем разница между процессором Intel i7 и четырехъядерным процессором Xeon?

    Невозможно изменить текущий рабочий каталог на внешний диск в Windows

    Как создать class Java, который реализует интерфейс Serializable из xsd с помощью JAXB?

    Может ли лицензия, купленная в одной стране, использоваться в другой стране?

    Давайте будем гением компьютера.