エラー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 returned 1 exit status
エラーは、以前のエラーの結果です。あなたの例では、以前のエラー-undefined reference to 'clrscr'
-があり、これが実際のエラーです。終了ステータスエラーは、ビルドプロセスのリンク手順でエラーが発生したことを通知するだけです。通常、exit status 0
は成功を意味し、exit status
> 0はエラーを意味します。
プログラムをビルドすると、複数のツールが個別のステップとして実行され、最終的な実行可能ファイルが作成されます。あなたの場合、それらのツールの1つはld
であり、最初に見つかったエラー(clrscr
参照が欠落している)を報告してから、終了ステータスを返します。終了ステータスは> 0であるため、エラーを意味し、報告されます。
多くの場合、ツールは終了ステータスとして、発生したエラーの数を返します。 ldツールが2つのエラーを検出した場合、終了ステータスは2になります。
あなたの状況では、欠落しているシンボルへの参照を得ました。しかし、状況によっては、ldはエラー情報を提供しません。
Ldが提供する情報を拡張する場合は、次のパラメーターを$(LDFLAGS)に追加するだけです
-Wl,-V
clrscr
は標準C関数ではありません。インターネットによると、それはかつてのBorland Cのものでした。
clrscr(); C++の関数?
含める:#include<stdlib.h>
System("cls")
の代わりにclrscr()
を使用します
タスクマネージャーを実行して、プログラムがまだ実行されているかどうかを確認してください。
実行中の場合は、停止して再度実行します。 [エラー] ldが1つの終了ステータスを返しましたは戻りません