Conduite de Projet en C sous GNU/Linux
PrécédentSuivant

Chapitre 3. Les bibliothèques associées au langage

Le compilateur et outils associés

Le compilateur C (gcc) travaille en plusieurs étapes. Par défaut, la commande gcc exécute toutes ces étapes sur les fichiers donnés en paramètre. Il faut lui préciser une option pour qu'il s'arrête après une de ces étapes.

la précompilation

inclut les fichiers précisés et/ou étend les macros dans un fichier source (C ou assembleur) :

Utilisez l'option -E de gcc pour qu'il s'arrête après la précompilation.

la compilation

transforme un fichier source C en un fichier source assembleur :

Utilisez l'option -S de gcc pour qu'il s'arrête après la compilation.

l'assemblage

transforme un fichier source (C ou assembleur) en un fichier objet :

Utilisez l'option -c de gcc pour qu'il s'arrête après l'assemblage.

l'édition de lien

regroupe et relie plusieurs fichiers objet pour créer l'exécutable.

Exemple

Vous avez écrit plusieurs fichiers C ou assembleur pour un programme de cartes :

cartes.c et distribuer.c

Fichiers sources C

dessiner.s

Fichier source assembleur avec inclusions et/ou macros.

compter_points.S

fichier source assembleur sans inclusions ni macros.

Si vous voulez directement obtenir l'exécutable à partir de tous ces fichiers sources, tapez la commande :


             gcc cartes.c distribuer.c dessiner.s compter_points.S -o cartes
     
Le compilateur gcc va alors créer les fichier objets correspondants à chaque fichier source - cartes.o, distribuer.o, dessiner.o et compter_points.o - puis relier tous ces fichiers objets en un fichier exécutable cartes.

Vous voulez arrêter gcc juste avant qu'il ne relie les fichiers objets ? Tapez alors :


             gcc -c cartes.c distribuer.c dessiner.s compter_points.S
     

Vous voulez obtenir tous vos fichiers sources en assembleur :


             gcc -S cartes.c distribuer.c dessiner.s compter_points.S
     
gcc crée alors les fichiers cartes.s, distribuer.s, et ne touche pas aux fichiers dessiner.s et compter_points.S qui sont déjà en assembleur.

Vous voulez précompiler un de vos fichiers sources ? Pour voir par exemple comment sont étendues les macros que vous utilisez. Attention, gcc ne prend en compte que le premier fichier passé en paramètre et écrit le résultat sur la sortie standard, vous devez donc taper :


             gcc -E cartes.c > cartes.i
     

Les outils associés

Le gestionnaire d'archive (ar) permet de regrouper plusieurs fichiers objet.

Dans l'exemple précédent, vous pouvez décider d'archiver les fichiers objet dessiner.o et distribuer.o, par exemple pour les réutiliser pour un autre jeu de cartes. La compilation se fait alors ainsi :

gcc -c dessiner.s distribuer.c

Crée les fichiers objet dessiner.o et distribuer.o.

rm -f libcartes.a; ar q libcartes.a dessiner.o distribuer.o; ar s libcartes.a

Ajoute les deux fichiers dessiner.o et distribuer.o dans le fichier archive libcartes.a, puis crée un index dans cette archive.

gcc cartes.c compter_points.S libcartes.a -o cartes

Crée les fichiers objet cartes.o et compter_points.o, puis relie ces derniers avec ceux inclus dans libcartes.a pour former l'exécutable cartes.


PrécédentDébut du documentSuivant
Le langage C L'environnement de programmation