Messages d'erreur du compilateur GCC

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.
 

Erreurs de compilation

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.
 

Warnings sans -Wall

err.c:24: warning: assignment from incompatible pointer type
tentative d'assignement entre deux pointeurs de type différents.
 

Warnings avec -Wall

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.
 

Erreurs d'édition de liens

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.