“ 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

这是什么意思?

791392 次浏览

clrscr不是标准的 C 语言函数,根据网上的说法,它曾经是老 Borland C 语言中的一个东西。
Is clrscr(); a function in C++?

ld returned 1 exit status错误是先前错误的结果。在您的示例中有一个更早的错误 -undefined reference to 'clrscr'-这是真正的错误。退出状态错误只是表明构建过程中的链接步骤遇到了一些错误。通常 exit status 0表示成功,exit status > 0表示错误。

生成程序时,可以将多个工具作为单独的步骤运行,以创建最终的可执行文件。在您的示例中,其中一个工具是 ld,它首先报告发现的错误(clrscr引用丢失) ,然后返回退出状态。由于退出状态 > 0,它意味着一个错误并被报告。

在许多情况下,工具返回它们遇到的错误的数量作为退出状态。因此,如果 ld工具发现两个错误,它的退出状态将是2。

在你的情况下,你得到了一个缺失符号的参考。但是在某些情况下,ld 不会提供错误信息。

如果希望展开 ld 提供的信息,只需将以下参数添加到 $(LDFLAGS)

-Wl,-V

包括: #include<stdlib.h>

使用 System("cls")而不是 clrscr()

尝试运行任务管理器以确定程序是否仍在运行。

如果它正在运行,那么停止它并再次运行它。 [错误] ld 返回1退出状态将不会返回

即使使用最基本的 HELLO WORLD 程序,我也得到了这个错误:

cout << "Hello World";

这个问题很容易解决: 我忘记缝合了以前运行控制台窗口,只是将其最小化而忘记了。这就是为什么我在尝试运行我的未来程序时总是出现这个错误。 关上吧:)

希望能有所帮助,虽然你可能有其他问题。

只要按下 Ctrl + S,然后执行部分