Wat doet “collect2: error: ld heeft 1 exit-status geretourneerd” bedoel?

Ik zie de fout collect2: error: ld returned 1 exit status heel vaak terug. Ik was bijvoorbeeld het volgende codefragment aan het uitvoeren:

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;
  }
}

en ik heb dit:

main.c:(.text+0x33): undefined reference to `clrscr'                       
collect2: error: ld returned 1 exit status 

Wat betekent het?


Antwoord 1, autoriteit 100%

De ld returned 1 exit status fout is het gevolg van eerdere fouten. In uw voorbeeld is er een eerdere fout – undefined reference to 'clrscr' – en dit is de echte. De exit-statusfout geeft alleen aan dat de koppelingsstap in het bouwproces enkele fouten heeft ondervonden. Normaal gesproken betekent exit status 0 succes, en exit status > 0 betekent fouten.

Wanneer u uw programma bouwt, kunnen meerdere hulpprogramma’s als afzonderlijke stappen worden uitgevoerd om het uiteindelijke uitvoerbare bestand te maken. In jouw geval is een van die tools ld, die eerst de gevonden fout rapporteert (clrscr-referentie ontbreekt), en vervolgens de exit retourneert toestand. Aangezien de uitgangsstatus > 0 is, betekent dit een fout en wordt deze gerapporteerd.

In veel gevallen geven tools als exit-status het aantal fouten terug dat ze zijn tegengekomen. Dus als ld tool twee fouten vindt, is de exit-status 2.


Antwoord 2, autoriteit 12%

In jouw situatie heb je een verwijzing naar de ontbrekende symbolen. Maar in sommige situaties zal ld geen foutinformatie geven.

Als u de door ld verstrekte informatie wilt uitbreiden, voegt u gewoon de volgende parameters toe aan uw $(LDFLAGS)

-Wl,-V

Antwoord 3, autoriteit 4%

clrscr is geen standaard C-functie. Volgens internet was het vroeger een ding in het oude Borland C.
Is clrscr(); een functie in C++?


Antwoord 4

Probeer Taakbeheer uit te voeren om te bepalen of uw programma nog actief is.

Als het actief is, stop het dan en voer het opnieuw uit. de [Fout] ld geretourneerd 1 exit-status komt niet terug


Antwoord 5

Opnemen: #include<stdlib.h>

en gebruik System("cls") in plaats van clrscr()


Antwoord 6

Ik kreeg deze fout zelfs met het standaard HELLO WORLD-programma:

cout << "Hello World";

Het probleem was eenvoudig op te lossen: IK VERGEET TE SLUITEN het voorheen draaiende consolevenster, heb het eenvoudig geminimaliseerd en vergeten. Daarom kreeg ik deze foutmelding steeds toen ik mijn toekomstige programma probeerde uit te voeren.
Sluit het gewoon 🙂

Ik hoop dat het zou helpen, hoewel het kan zijn dat je andere problemen hebt.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

one + thirteen =

Other episodes