提问人:user3682120 提问时间:12/3/2014 最后编辑:Guy Avrahamuser3682120 更新时间:7/19/2023 访问量:937174
“collect2: error: ld returned 1 exit status” 是什么意思?
What does "collect2: error: ld returned 1 exit status" mean?
问:
我经常看到错误collect2:error:ld返回1退出状态。例如,我正在尝试构建以下代码片段:
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
这是什么意思?
答:
clrscr
不是标准的 C 函数。根据互联网,它曾经是旧C++ Builder中的东西。
评论
该错误是先前错误的结果。在您的示例中,有一个较早的错误——这是真正的错误。退出状态错误只是表示生成过程中的链接步骤遇到了一些错误。通常,表示成功,> 0 表示错误。ld returned 1 exit status
undefined reference to 'clrscr'
exit status 0
exit status
生成程序时,可以运行多个工具作为单独的步骤来创建最终的可执行文件。在您的例子中,其中一个工具是 ld,它首先报告它发现的错误(缺少引用),然后返回退出状态。由于退出状态为 > 0,因此表示错误并报告。clrscr
在许多情况下,工具会返回它们遇到的错误数作为退出状态。因此,如果 ld 工具发现两个错误,则其退出状态将为 2。
评论
collect2: error: ld returned 1 exit status
/usr/tmp/
在你的情况下,你得到了一个对缺失符号的引用。但在某些情况下,ld 不会提供错误信息。
如果要扩展 ld 提供的信息,只需将以下参数添加到 $(LDFLAGS) 中即可
-Wl,-V
评论
-Wl,-t
ld
-V
-t
-V
包括:#include<stdlib.h>
并使用代替System("cls")
clrscr()
评论
尝试运行任务管理器以确定程序是否仍在运行。
如果它正在运行,则停止它并再次运行它。[Error] ld returned 1 退出状态不会再回来。
评论
即使使用基本的 Hello, World! 程序,我也会出现此错误:
cout << "Hello, World!";
这个问题很容易解决:我忘记关闭以前运行的控制台窗口,只是将其最小化并忘记了。这就是为什么我在尝试运行我未来的程序时不断收到此错误的原因。 只需关闭它:)
评论
只需按 Ctrl+S,然后执行执行部分
评论
conio.h
int main()
void main()
return 0;
Hi..
collect2: error: ld returned 1 exit status
“是 GCC (ld) 的签名。