Que signifie “collect2: error: ld a renvoyé 1 état de sortie”?

Je vois l’erreur collect2: error: ld returned 1 exit status très souvent. 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("\n\na"); break; case 2: printf("\nb\n"); break; case 3: printf("\nc"); break; } } 

et j’ai eu ceci:

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

Qu’est-ce que ça veut dire?

L’erreur “ld renvoyé 1 état de sortie” est la conséquence des erreurs précédentes. Dans votre exemple, il y a une erreur précédente – “référence indé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é des erreurs. Normalement, le statut de sortie 0 correspond au succès et le statut de sortie> 0 aux erreurs.

Lorsque vous générez votre programme, plusieurs outils peuvent être exécutés séparément pour créer le fichier exécutable final. Dans votre cas, l’un de ces outils est ld , qui signale en premier lieu l’erreur trouvée (référence clrscr manquante), puis renvoie le statut de sortie. Puisque l’état de sortie est> 0, cela signifie une erreur et est signalé.

Dans de nombreux cas, les outils renvoient comme état de sortie le nombre d’erreurs rencontrées. Donc, si l’outil ld trouve deux erreurs, son statut de sortie serait 2.

Dans votre cas, vous avez une référence aux symboles manquants. Mais dans certaines situations, LD ne fournira pas d’informations d’erreur.

Si vous souhaitez développer les informations fournies par ld, ajoutez simplement les parameters suivants à votre $ (LDFLAGS)

 -Wl,-V 

clrscr n’est pas une fonction standard. Selon Internet, c’était une chose du vieux Borland C.
Est clrscr (); une fonction en C ++?

Inclure: #include

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