Ошибка компиляции Gcc при компиляции файла *.cc

#c #gcc #compiler-errors

#c #gcc #ошибки компилятора

Вопрос:

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

 # include <stdio.h>
int main() {
  enum mar_status {
    single,married,divorced
  };
  enum mar_status person1,person2;
  person1 = single;
  printf("%dn",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, все пойдет нормально. Есть идеи относительно причины сбоя компиляции?

Ответ №1:

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

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

Ответ №2:

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

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

Ответ №3:

Вы вводите компилятор в заблуждение — когда вы говорите:

  gcc enum2.cc
  

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

 gcc enum2.c
  

Ответ №4:

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

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