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?
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.
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
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++?
comprend: #include<stdlib.h>
et utiliser System("cls")
au lieu de clrscr()