Sur Linux, lorsque l’on doit compiler un programme, on peut utiliser la commande make.
Celle-ci accepte de nombreuses options.
Dans ce tutoriel, je vous montre comment utiliser la commande make avec des exemples.

Table des matières
- 1 La syntaxe de la commande make ?
- 2 Comment utiliser la commande make avec exemples
- 2.1 Compiler un programme
- 2.2 Installer les exécutables et binaires
- 2.3 make all
- 2.4 make clean : nettoyer le fichier Makefile
- 2.5 make clean : supprimer tous les exécutables et fichiers .o
- 2.6 Exécuter make en mode debogage
- 2.7 Exécuter make avec un autre fichier Makefile
- 2.8 Compiler un programme depuis un autre répertoire
- 3 Liens
La syntaxe de la commande make ?
La commande make compile différents et construit un exécutable final à partir des fichiers sources. L’objectif de make est d’automatiser la compilation des fichiers, ce qui rend le processus plus simple et moins long.
Pour cela, le développeur peut fournit un fichier Makefile qui donne les instructions de compilation à travers de règles.
La commande make peut utiliser un compilateur comme gcc pour compiler les sources.
La commande fonctionne avec n’importe quel langage de programmation, à condition que le compilateur puisse être exécuté avec une commande shell.
La syntaxe est la suivante :
make [ -f nom_fichier_make] [ options ] ... [ cibles ] ...
Commande | Description |
---|---|
-B , --always-make | Compile inconditionnellement toutes les cibles |
-d , --debug[=FLAGS] | Imprime les informations de débogage |
-C dir , --directory=dir | Changes the directory before executing the Makefile |
-f file , --file=file , --Makefile=FILE | Change le répertoire avant d’exécuter le Makefile |
-i , --ignore-errors | Ignore toutes les erreurs dans les commandes |
-I dir , --include-dir=dir | Spécifie un répertoire pour rechercher le Makefile spécifié |
-j [jobs] , --jobs[=jobs] | Spécifie le nombre de travaux à exécuter simultanément |
-k , --keep-going | Continue à exécuter make aussi longtemps que possible après avoir reçu une erreur |
-l [load] , --load-average[=load] | Spécifie qu’aucune nouvelle tâche ne doit être démarrée si d’autres tâches sont dans la file d’attente |
-n , --dry-run , --just-print , --recon | Imprime la sortie attendue sans exécuter make |
-o file , --old-file=file , --assume-old=file | Garantit que make ne refait pas le fichier même s’il est plus ancien que les dépendances |
-p , --print-data-base | Imprime la base de données produite après lecture du Makefile |
-q , --question | Active le mode Question, dans lequel make n’exécute aucune commande mais renvoie un état de sortie zéro si la cible est déjà compilée. |
-r , --no-builtin-rules | Élimine les règles implicites intégrées |
-s , --silent , --quiet | Limite l’impression des commandes lorsqu’elles sont exécutées |
-S , --no-keep-going , --stop | Arrête la commande « -k, –keep-going » |
-t , --touch | Toucher les fichiers (les marquer à jour sans vraiment les modifier) au lieu d’exécuter leurs commandes. Ceci est utilisé pour prétendre que les commandes ont été exécutées, afin de tromper les invocations futures de make. |
--trace | Trace la disposition de chaque cible |
-W file , --what-if=file , --new-file=file , --assume-new=file | Ignore le fait que le fichier cible a été modifié |
--warn-undefined-variables | Avertit qu’une variable inconnue est référencée |
Comment utiliser la commande make avec exemples
Compiler un programme
Pour lancer la compilation d’un programme, utilisez la commande sans option.
Lorsque la commande make est exécutée dans un répertoire donné, elle localise le fichier makefile, trouve les cibles qui y sont spécifiées, et les utilise comme arguments. Les cibles dans un fichier makefile spécifient également leurs dépendances, et si aucune n’est spécifiée, le fichier make construit les dépendances et leur cible principale.
make
Installer les exécutables et binaires
Quand vous faites « make install », le programme make prend les binaires de l’étape précédente et les copie dans des emplacements appropriés pour qu’ils soient accessibles.
Pour cela, il suit les règles dictées dans le fichier Makefile.
Contrairement à ce qui se passe sous Windows, l’installation ne nécessite que la copie de quelques bibliothèques et exécutables et il n’y a aucune exigence de registre en tant que telle. En bref, « make install » ne fait que copier les fichiers compilés dans des emplacements appropriés.
make install
make all
Lorsque vous faites quelque chose comme « make all », le programme make exécute une règle nommée « all » à partir d’un fichier dans le répertoire courant nommé « Makefile ».
Cette règle appelle généralement le compilateur pour compiler un code source en binaires.
Puis make exécute « make install » pour installer les binaires dans le système.
make all
make clean : nettoyer le fichier Makefile
Lorsqu’un utilisateur lance make pour la première fois, la commande crée les fichiers objets et l’exécutable. Par conséquent, pour désencombrer le dossier source et nettoyer les fichiers objets, ajoutez la fonction clean au Makefile :
- La cible propre sans dépendances – la cible est toujours considérée comme périmée et toujours exécutée
- La commande rm – supprime les objets spécifiés
- La partie *.o – correspond aux fichiers avec l’extension o et nettoie les fichiers objets et my_app
Pour nettoyer tous les fichiers d’objets :
make clean
make clean : supprimer tous les exécutables et fichiers .o
En utilisant la cible remove que nous avons créée dans le fichier makefile, nous pouvons l’invoquer en utilisant make pour supprimer tous les fichiers exécutables et *.o.
make remove
Exécuter make en mode debogage
Pour exécutez make en mode débogage pour afficher des informations supplémentaires sur le processus de compilation.
Exécutez make avec l’option -d pour afficher la sortie de débogage :
make -d
Exécuter make avec un autre fichier Makefile
Par défaut, make recherche un fichier appelé Makefile ou makefile dans le répertoire courant. Pour utiliser un autre fichier, exécutez :
make -f <nom fichier>
Par exemple si un Makefile est nommé mon_fichier, exécutez :
make -f mon_fichier
Compiler un programme depuis un autre répertoire
Pour compiler un programme depuis un autre répertoire, utilisez l’option -C en spécifiant le répertoire.
Par exemple pour compiler depuis /home/testdir :
make -C /home/testdir/