Ошибка компиляции Gcc при компиляции файла * .cc - PullRequest
2 голосов
/ 07 июня 2011

Я написал простую C-программу с использованием компилятора gcc в среде Ubuntu.Код прост.Однако, когда я пытаюсь скомпилировать, он выдает ошибку, которую я не могу понять.Вот код и ошибка

# include <stdio.h>
int main() {
  enum mar_status {
    single,married,divorced
  };
  enum mar_status person1,person2;
  person1 = single;
  printf("%d\n",person1);  //line B
}

Я получаю следующую ошибку при компиляции

gcc enum2.cc
/tmp/cc6stgaW.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status

Если я удаляю оператор printf в строке B, все идет хорошо.Любые идеи относительно того, почему компиляция терпит неудачу?

Ответы [ 4 ]

4 голосов
/ 07 июня 2011

Вы используете gcc для компиляции кода C ++? (.cc расширение)

Переименуйте файл в enum2.c или скомпилируйте с g++.

2 голосов
/ 07 июня 2011

Неопределенные ссылки на внутренние функции библиотеки времени выполнения, такие как __gxx_personality_v0, также являются признаком связывания объектных файлов C ++ с gcc вместо g ++.

Изменение расширения файла с .cc или .cpp на .c решит проблему.

1 голос
/ 07 июня 2011

Работает нормально.Проверьте: http://ideone.com/bhjlf

Я думаю, ваша команда для компиляции неверна.

1 голос
/ 07 июня 2011

Вы путаете компилятор - когда вы говорите:

 gcc enum2.cc

он думает, что вы компилируете код C ++, но вы делаете это с помощью gcc, который не связывает правильные библиотеки C ++.Использование:

gcc enum2.c
...