Lors de la compilation le compilateur indique, lorsqu'il ne peut compiler,
des messages d'erreur. Il indique parfois des avertissements (warnings)
qui ne l'empèche pas de compiler mais qui selon lui peuvent être
source d'erreur.
La compilation a lieu fonction par fonction. Une liste d'erreur commence
par indiquer dans quelle fonction se trouvent les erreur. Le message
err.c: In function `main':
indique que lors de la compilation du fichier err.c, des erreurs (dont
la liste suit) ont été trouvées dans la fonction main.
Pour chaque erreur (ou warning) le compilateur indique un message avec
le numéro de la ligne où elle a été trouvée.
err.c:21: parse error before `;'
Erreur de syntaxe repérée avant le caractère ';'
à la ligne 21 du fichier err.c
err.c:8: conflicting types for `calc'
err.c:4: previous declaration of `calc'
la fonction 'calc' a des déclarations qui diffèrent entre
les lignes 8 et 4.
err.c:16: redeclaration of `i'
err.c:15: `i' previously declared here
la variable 'i' a été déclarée deux fois,
lignes 15 et 16.
err.c:16: unterminated string or character constant
err.c:15: possible real start of unterminated
constant
Une chaine de caractères n'a pas été correctement
terminée par un guillemet à la ligne 16. Le début de
la chaine est probablement à la ligne 15.
err.c:24: incompatible type for argument 1 of
`calc'
l'argument numero 1 passé à la fonction 'calc' à
la ligne 24 est incompatible avec ce que la fonction attends d'après
sa définition.
err.c:24: warning: assignment from incompatible
pointer type
tentative d'assignement entre deux pointeurs de type différents.
err.c:17: warning: unused variable `dy'
la variable 'dy' est déclarée à la ligne 17 mais
pas utilisée.
err.c:25: warning: control reaches end of non-void
function
une fonction qui doit retourner une valeur n'en retourne pas à
la ligne 25.
err.c:21: warning: statement with no effect
une expression à la ligne 21 n'a pas d'effet.
err.c:25: warning: implicit declaration of function
`calc'
la fonction 'cacl' n'a pas été déclarée
avant son utilisation à la ligne 25.
A la fin de la compilation, le programme gcc tente de "lier" le programme avec la bibliothèque standard du C (libc) qui est toujours incluse (elle contient toutes les fonctions C usuelles comme les entrées-sorties, mais pas les fonctions mathématiques), et les éventuelles bibliothèques de fonctions additionnelles définies par l'option -l... Il peut y avoir des erreurs, essentiellement par l'oubli d'une bibliothèque:
/tmp/cca009901.o(.text+0xe): undefined reference
to `sin'
la fonction sin n'a pas de définition. Dans ce cas, l'ajout
de l'option -lm (lier avec la bibliothèque mathématique)
a été oubliée dans la ligne de commande de compilation.