Что означает "collect2: error: ld return 1 exit status" означает?
Я вижу ошибку collect2: error: ld returned 1 exit status
очень часто. Например, я выполнял следующий фрагмент кода:
void main() {
char i;
printf("ENTER i");
scanf("%c",&i);
clrscr();
switch(i) {
default:
printf("\nHi..\n");
break;
case 1:
printf("\n\na");
break;
case 2:
printf("\nb\n");
break;
case 3:
printf("\nc");
break;
}
}
и я получил это:
main.c:(.text+0x33): undefined reference to 'clrscr'
collect2: error: ld returned 1 exit status
Что это значит?
Ответы
Ответ 1
Ошибка ld returned 1 exit status
является следствием предыдущих ошибок. В вашем примере есть более ранняя ошибка - undefined reference to 'clrscr'
- и это настоящая ошибка. Ошибка состояния выхода просто сигнализирует о том, что на этапе компоновки в процессе сборки возникли некоторые ошибки. Обычно exit status 0
означает успех, а exit status
> 0 означает ошибки.
Когда вы создаете свою программу, несколько инструментов могут быть запущены как отдельные шаги для создания окончательного исполняемого файла. В вашем случае одним из этих инструментов является ld
, который сначала сообщает об обнаруженной ошибке (отсутствует ссылка clrscr
), а затем возвращает состояние выхода. Поскольку статус выхода> 0, это означает ошибку и сообщается.
Во многих случаях инструменты возвращают в качестве состояния выхода количество ошибок, с которыми они столкнулись. Поэтому, если инструмент ld обнаружит две ошибки, его состояние выхода будет равно 2.
Ответ 2
В вашей ситуации вы получили ссылку на недостающие символы. Но в некоторых ситуациях ld не будет предоставлять информацию об ошибках.
Если вы хотите расширить информацию, предоставленную ld, просто добавьте следующие параметры в ваш $ (LDFLAGS)
-Wl,-V
Ответ 3
clrscr
не является стандартной функцией C. Согласно интернету, это было когда-то в старой Borland C.
Является clrscr(); функция в C++?
Ответ 4
Включить: #include<stdlib.h>
и используйте System("cls")
вместо clrscr()
Ответ 5
Попробуйте запустить диспетчер задач, чтобы определить, работает ли ваша программа.
Если он работает, остановите его и запустите снова. [Ошибка] ld вернул 1 состояние выхода не вернется