“collect2:error:ld返回1退出状态”是什么意思?

我看到错误collect2: error: ld returned 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 

这是什么意思?

“ld返回1退出状态”错误是先前错误的结果。 在你的例子中有一个早期的错误 – “对’clrscr’的未定义引用” – 这是真实的错误。 退出状态错误仅表示构建过程中的链接步骤遇到一些错误。 通常退出状态0表示成功,退出状态> 0表示错误。

在构建程序时,可以将多个工具作为单独的步骤运行,以创建最终的可执行文件。 在你的情况下,其中一个工具是ld ,它首先报告它找到的错误(clrscr引用丢失),然后它返回退出状态。 由于退出状态> 0,表示错误并报告。

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

在您的情况下,您可以参考缺失的符号。 但在某些情况下,ld不会提供错误信息。

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

 -Wl,-V 

clrscr不是标准的C函数。 根据互联网,它曾经是旧Borland C的东西。
是clrscr(); C ++中的函数?

包括: #include

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