我看到错误 * collect2:error:ld经常返回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
这是什么意思?
7条答案
按热度按时间1zmg4dgp1#
ld returned 1 exit status
错误是以前错误的结果。在您的示例中,有一个以前的错误-undefined reference to 'clrscr'
-这是真实的的错误。退出状态错误只是表明构建过程中的链接步骤遇到了一些错误。通常,exit status 0
表示成功,exit status
〉0表示错误。在构建程序时,可能会分别运行多个工具来创建最终的可执行文件,在您的示例中,其中一个工具是ld,它首先报告它发现的错误(
clrscr
引用丢失),然后返回退出状态,由于退出状态〉0,这意味着错误并被报告。在很多情况下,工具返回它们遇到的错误数作为退出状态,所以如果ld工具发现两个错误,它的退出状态将是2。
0lvr5msh2#
在您的情况下,您得到了对缺失符号的引用。但在某些情况下,ld不会提供错误信息。
如果要扩展ld提供的信息,只需将以下参数添加到$(LDFLAGS)中即可
3bygqnnd3#
clrscr
不是标准的C函数,根据互联网,它曾经是旧的C++Builder中的一个东西。gxwragnw4#
尝试运行Task Manager以确定程序是否仍在运行。
如果它正在运行,请将其停止并再次运行。[Error] ld返回1退出状态将不会返回。
hmmo2u0o5#
即使使用基本的 Hello, World! 程序,我也会遇到此错误:
这个问题很容易解决:***我忘记关闭***之前运行的控制台窗口,只是简单地最小化它,然后忘记了。这就是为什么我在尝试运行我的未来程序时不断收到此错误。只需关闭它:)
hmmo2u0o6#
包括:
#include<stdlib.h>
并使用
System("cls")
代替clrscr()
ghg1uchk7#
只需按下Ctrl+S,然后执行部分