0Pricing
C Academy · Leçon

Compiler plusieurs fichiers

Construisez un programme composé de plusieurs fichiers.

Compiler plusieurs fichiers est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.

Des fichiers source au programme

La transformation de fichiers source C répartis sur plusieurs fichiers en un exécutable se déroule en deux étapes : la compilation et l’édition de liens.

Chaque fichier .c est compilé séparément en fichier objet. Ensuite, l’éditeur de liens combine tous les fichiers objets, résout les références entre eux et produit un programme exécutable.

La compilation en une seule commande

L’approche la plus simple consiste à transmettre tous les fichiers source à gcc en une seule fois. Le compilateur construit chacun d’eux, puis les lie automatiquement.

L’option -o donne son nom au programme de sortie. Indiquez tous les fichiers .c ; les en-têtes sont inclus via #include et ne doivent pas être indiqués ici.

gcc main.c math_utils.c -o app

Compilation séparée

Pour les projets plus importants, compilez chaque fichier en fichier objet avec -c. Cela produit un fichier .o sans effectuer l’édition de liens.

La compilation séparée signifie que la modification d’un seul fichier source nécessite uniquement de recompiler ce fichier, ce qui accélère les grandes compilations.

gcc -c main.c        /* produces main.o */
gcc -c math_utils.c  /* produces math_utils.o */

L’étape d’édition de liens

Une fois les fichiers objets obtenus, liez-les pour créer un exécutable. Ici, gcc agit comme éditeur de liens : il assemble les objets et résout les symboles entre les fichiers.

N’utilisez pas -c cette fois, car nous voulons obtenir un programme final et non un autre fichier objet.

gcc main.o math_utils.o -o app

Rôle de l’éditeur de liens

L’éditeur de liens associe chaque utilisation d’un symbole à sa définition.

Lorsque main.o appelle add, l’éditeur de liens trouve la définition de add dans math_utils.o et les relie. Il ajoute également le code de la bibliothèque standard dont votre programme a besoin.

Erreurs de référence non définie

Si vous oubliez un fichier objet lors de l’édition de liens, l’éditeur de liens ne peut pas trouver une définition et signale une référence non définie.

Il s’agit d’une erreur au moment de l’édition de liens, et non d’une erreur de compilation : chaque fichier a été compilé correctement, mais une définition nécessaire manquait dans la commande finale.

gcc main.o -o app
/* undefined reference to `add' */
/* fix: include math_utils.o */

Options d’avertissement utiles

Compilez toujours avec les avertissements activés. -Wall et -Wextra mettent rapidement en évidence les erreurs probables.

Ajoutez -std=c11 pour sélectionner une norme du langage et obtenir un comportement prévisible avec différents compilateurs. Ces options fonctionnent que vous compiliez en une seule étape ou séparément.

gcc -Wall -Wextra -std=c11 -c main.c
gcc -Wall -Wextra -std=c11 -c math_utils.c
gcc main.o math_utils.o -o app

Chemins d’inclusion

Lorsque les en-têtes se trouvent dans un autre répertoire, indiquez au compilateur où les chercher avec -I.

Par exemple, -Iinclude ajoute un dossier include/ au chemin de recherche ; ainsi, #include "math_utils.h" est résolu même depuis un autre dossier.

gcc -Iinclude -c src/main.c -o build/main.o

Pourquoi la recompilation est importante

La compilation séparée est particulièrement utile lorsqu’un seul fichier est modifié. Vous ne recompilez que l’objet de ce fichier, puis vous effectuez de nouveau l’édition de liens.

En revanche, si vous modifiez un en-tête, chaque fichier source qui l’inclut doit être recompilé, car le texte de l’en-tête fait partie de chacun d’eux.

/* edited math_utils.c only */
gcc -c math_utils.c
gcc main.o math_utils.o -o app

Automatiser avec make

Saisir les commandes à la main devient fastidieux. Un Makefile enregistre les règles et ne reconstruit que ce qui a changé.

Cet exemple minimal lie deux fichiers objets pour créer app ; make suit les horodatages des fichiers pour décider quoi recompiler.

app: main.o math_utils.o
	gcc main.o math_utils.o -o app

main.o: main.c math_utils.h
	gcc -c main.c

Récapitulatif complet de la compilation

Voici le déroulement complet d’un petit projet, des fichiers objets jusqu’au programme terminé avec les avertissements activés.

Compilez chaque fichier source, puis liez les fichiers objets. Exécutez le résultat pour confirmer qu’il fonctionne de bout en bout.

gcc -Wall -c main.c
gcc -Wall -c math_utils.c
gcc main.o math_utils.o -o app
./app

Vérification rapide

Vérifiez votre compréhension du processus de compilation de plusieurs fichiers.

Récapitulatif

Vous avez appris à compiler chaque fichier .c en fichier objet avec -c, puis à lier les fichiers objets pour créer un programme. Utilisez -Wall et -I pour les avertissements et les chemins d’inclusion.

Les références non définies indiquent qu’un fichier objet manque au moment de l’édition de liens. Des outils comme make automatisent la recompilation de ce qui a changé.

Questions Fréquemment Posées

La leçon « Compiler plusieurs fichiers » est-elle gratuite ?

Oui — le texte complet de « Compiler plusieurs fichiers » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Compiler plusieurs fichiers » ?

Construisez un programme composé de plusieurs fichiers. Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C Academy ?

Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Compiler plusieurs fichiers » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C Academy ?

Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fichiers d’en-tête et source
  2. Gardes d’inclusion
  3. extern et liaison
  4. Compiler plusieurs fichiers
← Retour à C Academy