Was bedeutet “collect2: error: ld hat 1 Exit-Status zurückgegeben”?
Lesezeit: 4 Minuten
Benutzer3682120
Ich sehe den Fehler collect2: error: ld returned 1 exit status sehr oft. Zum Beispiel habe ich das folgende Code-Snippet ausgeführt:
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;
}
}
und ich habe das bekommen:
main.c:(.text+0x33): undefined reference to `clrscr'
collect2: error: ld returned 1 exit status
Was bedeutet das?
Versuchen Sie es einzuschließen conio.h wenn Sie TurboC verwenden. Wenn Sie GCC verwenden, funktioniert dies nicht, selbst wenn Sie es einschließen. Verwenden Sie auch int main() Anstatt von void main() und füge a hinzu return 0; am Ende. Auch würde das Programm nur drucken Hi.. und Ausgang, was auch immer der Eingang sein mag
– Spikatrix
3. Dezember 2014 um 13:07 Uhr
Wojtek Surowka
Das ld returned 1 exit status Fehler ist die Folge früherer Fehler. In Ihrem Beispiel gibt es einen früheren Fehler – undefined reference to 'clrscr' – und das ist der echte. Der Exit-Status-Fehler signalisiert lediglich, dass beim Verknüpfungsschritt im Build-Prozess einige Fehler aufgetreten sind. Normalerweise exit status 0 bedeutet Erfolg und exit status > 0 bedeutet Fehler.
Wenn Sie Ihr Programm erstellen, können mehrere Tools als separate Schritte ausgeführt werden, um die endgültige ausführbare Datei zu erstellen. In Ihrem Fall ist eines dieser Tools lddas zuerst den gefundenen Fehler meldet (clrscr Referenz fehlt) und gibt dann den Exit-Status zurück. Da der Exit-Status > 0 ist, bedeutet dies einen Fehler und wird gemeldet.
In vielen Fällen geben Tools als Exit-Status die Anzahl der aufgetretenen Fehler zurück. Also wenn ld Wenn das Tool zwei Fehler findet, wäre sein Exit-Status 2.
Hallo Sorowka, danke!! “In vielen Fällen geben Tools als Exit-Status die Anzahl der gefundenen Fehler zurück” bedeutet, dass bei 2 Fehlern ld return 2 exit status zurückgegeben wird.
– Benutzer3682120
3. Dezember 2014 um 13:17 Uhr
Derselbe Fehler (collect2: error: ld returned 1 exit status) kann verursacht werden, wenn nicht genügend Speicherplatz vorhanden ist /usr/tmp/. Weil der Linker keine temporären Dateien erstellen kann.
– Kamil S Jaron
7. Februar 2017 um 13:10 Uhr
ld ist der GNU-Linker und normalerweise der letzte Schritt im C-Kompilierungsprozess. Hier ist die Online-Manpage für ld: ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html Ihr Fehler ist wahrscheinlich darauf zurückzuführen, dass clrscr nicht in den Bibliotheken definiert ist, die Sie dem Linker bereitgestellt haben.
– Aloha Churchill
23. November 2021 um 17:13 Uhr
In Ihrer Situation haben Sie einen Hinweis auf die fehlenden Symbole erhalten. Aber in einigen Situationen liefert ld keine Fehlerinformationen.
Wenn Sie die von ld bereitgestellten Informationen erweitern möchten, fügen Sie einfach die folgenden Parameter zu Ihrem $(LDFLAGS) hinzu
-Wl,-V
Auf OS XI musste verwendet werden -Wl,-t wie ld erkennt es nicht -V als Option, aber -t bewirkt, dass es alle Bibliotheken auflistet, die es zu verknüpfen versucht (was dazu beigetragen hat, mein Problem zu beheben, und Sie einen Teil des Weges zu dem bringt, was -V tut)
– Inspektor-g
2. November 2015 um 21:21 Uhr
Raivis Rengelis
clrscr ist keine Standard-C-Funktion. Laut Internet war es früher eine Sache im alten Borland C.
Ist clrscr(); eine Funktion in C++?
Versuchen Sie, den Task-Manager auszuführen, um festzustellen, ob Ihr Programm noch ausgeführt wird.
Wenn es läuft, stoppen Sie es und führen Sie es erneut aus. das [Error] ld hat 1 Exit-Status zurückgegeben wird nicht wiederkommen
Ich habe diesen Fehler sogar mit dem grundlegenden HELLO WORLD-Programm:
cout << "Hello World";
Das Problem war einfach zu beheben: ICH HABE VERGESSEN ZU SCHLIESSEN zuvor ausgeführtes Konsolenfenster, minimierte es einfach und vergaß. Aus diesem Grund habe ich diesen Fehler immer wieder erhalten, wenn ich versucht habe, mein zukünftiges Programm auszuführen. Einfach schließen 🙂
Ich hoffe, es würde helfen, obwohl es sein könnte, dass Sie andere Probleme haben.
Cody Grey
Enthalten: #include<stdlib.h>
und verwenden System("cls") Anstatt von clrscr()
Maya
Drücken Sie einfach Strg+S und führen Sie dann den Ausführungsteil aus
So wie es derzeit geschrieben steht, ist Ihre Antwort unklar. Bitte bearbeiten Sie, um zusätzliche Details hinzuzufügen, die anderen helfen zu verstehen, wie dies die gestellte Frage beantwortet. Weitere Informationen zum Verfassen guter Antworten finden Sie in der Hilfe.
– Gemeinschaft bot
28. November 2021 um 11:07 Uhr
14223800cookie-checkWas bedeutet “collect2: error: ld hat 1 Exit-Status zurückgegeben”?yes
Versuchen Sie es einzuschließen
conio.h
wenn Sie TurboC verwenden. Wenn Sie GCC verwenden, funktioniert dies nicht, selbst wenn Sie es einschließen. Verwenden Sie auchint main()
Anstatt vonvoid main()
und füge a hinzureturn 0;
am Ende. Auch würde das Programm nur druckenHi..
und Ausgang, was auch immer der Eingang sein mag– Spikatrix
3. Dezember 2014 um 13:07 Uhr