Ce n' "collect2: erreur: ld a retourné 1 code de sortie"?

je vois très souvent l'erreur collect2: error: ld returned 1 exit status . Par exemple, j'exécutais l'extrait de code suivant:

void main() {
  char i;

  printf("ENTER i");
  scanf("%c",&i);

  clrscr();

  switch(i) {
    default:
      printf("nHi..n");
      break;
    case 1:
      printf("nna");
      break;
    case 2:
      printf("nbn");
      break;
    case 3:
      printf("nc");
      break;
  }
}

et j'ai obtenu ceci:

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

ça veut dire Quoi?

21
demandé sur fenceop 2014-12-03 16:06:23

4 réponses

Le "ld a retourné 1 code de sortie" erreur est la conséquence d'erreurs précédentes. Dans votre exemple, il y a une erreur antérieure - "référence non définie à `clrscr'" - et c'est la vraie. L'erreur d'état de sortie indique simplement que l'étape de liaison dans le processus de construction a rencontré quelques erreurs. Normalement, exit status 0 signifie succès, et exit status > 0 signifie erreurs.

lorsque vous construisez votre programme, plusieurs outils peuvent être exécutés en tant qu'étapes distinctes pour créer la finale exécutable. Dans votre cas, l'un de ces outils est ld , qui signale d'abord l'erreur qu'il a trouvé (référence clrscr manquante), puis il renvoie l'état de sortie. Puisque l'état de sortie est > 0, cela signifie une erreur et est rapporté.

dans de nombreux cas, les outils retournent comme état de sortie le nombre d'erreurs qu'ils ont rencontrées. Donc si ld outil trouve deux erreurs, son statut de sortie serait 2.

41
répondu Wojtek Surowka 2018-07-17 10:41:58

dans votre situation, vous avez une référence aux symboles manquants. Mais dans certains cas, ld ne fournira pas d'informations sur les erreurs.

si vous souhaitez étendre les informations fournies par ld, ajoutez simplement les paramètres suivants à votre $(LDFLAGS)

-Wl,-V
7
répondu fazineroso 2015-09-22 08:02:52

clrscr n'est pas de série C de la fonction. Selon internet, il était une chose dans le Vieux Borland C.

est clrscr (); une fonction en C++?

1
répondu Raivis Rengelis 2017-05-23 12:10:41

comprend: #include<stdlib.h>

et utiliser System("cls") au lieu de clrscr()

-1
répondu Pratik 2017-10-22 15:07:47