#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
Я предполагаю, что ваша команда для компиляции неверна.