GNU/Linux >> Tutoriels Linux >  >> Linux

Linux make Commande avec des exemples

Présentation

Le Linux make La commande est un utilitaire couramment utilisé par les administrateurs système et les développeurs. La commande assiste le processus de compilation et est un outil indispensable pour créer des applications volumineuses. Cet utilitaire élimine les répétitions et accélère la compilation, ce qui permet de gagner du temps.

Cet article vous montrera comment utiliser Linux make commande avec des exemples.

Prérequis

  • Accès au terminal.
  • Le make fonction installée.
  • Un éditeur de texte.

Remarque : Si make n'est pas disponible sur le système, utilisez sudo apt install make .

Comment fonctionne la commande make ?

Le make La commande compile différents morceaux de programme et construit un exécutable final. Le but de make est d'automatiser la compilation des fichiers, ce qui rend le processus plus simple et moins chronophage.

La commande fonctionne avec n'importe quel langage de programmation tant que le compilateur peut être exécuté avec une commande shell.

La compilation est simple lorsque vous travaillez avec quelques fichiers. Par conséquent, le processus inclut l'appel du compilateur et la liste des noms de fichiers.

Par exemple, pour compiler un programme C à partir de trois fichiers (file1.c , fichier2.c , fichier3.h ):

Appelez le compilateur avec :

gcc file1.c file2.c file3.h

Le gcc la commande crée un a.out fichier, qui est un exécutable compilé standard.

Cependant, changer l'un des fichiers source nécessite de tout recompiler, ce qui est encore plus compliqué lorsque l'on travaille avec de grosses applications. Le make La commande automatise le processus, permettant aux utilisateurs de mettre à jour uniquement les éléments qui doivent être modifiés sans recompiler chaque fichier.

Le make La commande utilise un fichier généré par l'utilisateur, Makefile, pour compiler les éléments du programme. Lorsqu'il est exécuté pour la première fois, make recherche dans le Makefile des instructions, par exemple, des descriptions de fichiers et des heures de modification. Sur la base des données disponibles, make décide quels fichiers doivent être mis à jour et émet les commandes nécessaires.

Que sont les Makefiles ?

Un Makefile est un fichier texte contenant un ensemble de règles qui indiquent make comment construire une application. Une règle se compose de trois parties :la cible , dépendances , et commande(s) .

La syntaxe de base du Makefile est :

target: dependencies
<TAB> commands

Certaines parties de la syntaxe sont :

  • Cibles . Noms des fichiers à créer ou à mettre à jour après l'exécution de make .
  • Dépendances . Noms des fichiers (séparés par des espaces) à partir desquels la cible est construite.
  • Les commandes . Règles décrivant comment créer ou mettre à jour la cible lorsque les dépendances changent.

Un Makefile a plusieurs ensembles de règles. La première règle est celle par défaut et indique comment l'exécutable final (la cible) doit être créé à partir de fichiers objets non encore créés (dépendances) :

La syntaxe dans ce cas est :

EXECUTABLE: Object file 1, Object file 2
<TAB> commands

Remarque : Les commandes dans Makefiles viennent toujours après la TAB clé. Sinon, la commande ne fonctionne pas.

Après avoir défini la première règle, l'utilisateur ajoute des instructions sur la façon de créer des fichiers objets :

Le make La commande fonctionne en compilant les fichiers source en fichiers objet, puis en compilant les fichiers objet dans le fichier cible, l'exécutable final. La syntaxe Makefile avec les trois règles mentionnées ci-dessus est :

EXECUTABLE: Object file 1, Object file 2
<TAB> commands

Object file 1: Source file 1, Source file 2
<TAB> commands

Object file 2: Source file 2
<TAB> commands

Linux make syntaxe de commande

Le make de base la syntaxe ressemble à ceci :

make [OPTIONS]

Lorsqu'il est exécuté sans arguments, make construit la première cible à partir du Makefile.

Options de commande Linux make

Le make La commande est largement utilisée en raison de son efficacité, de sa variété et de sa capacité à effectuer des actions spécifiques. Alors que la commande imprime le résultat lorsqu'elle est exécutée sans options, l'ajout d'arguments développe make s convivialité.

Voici les options les plus utilisées :

Commande Description
-B , --always-make Compile inconditionnellement toutes les cibles.
-d , --debug[=FLAGS] Imprime les informations de débogage.
-C dir , --directory=dir Change le répertoire avant d'exécuter le Makefile.
-f file , --file=file , --Makefile=FILE Utilise un fichier spécifique comme 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 tâches à 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 Assure 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 Interdit l'impression des commandes au fur et à mesure qu'elles sont exécutées.
-S , --no-keep-going , --stop Arrête "-k , --keep-going " commande.
-t , --touch Touche les fichiers au lieu d'exécuter les commandes.
--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.

Exemples de commandes Linux make

La meilleure façon de comprendre make et Makefiles consiste à exécuter la commande et différentes options sur un programme simple.

Par exemple, pour créer un exécutable qui affiche le message "En savoir plus sur les Makefiles" , suivez ces étapes :

1. Créez un répertoire appelé Test .

2. Créez trois fichiers source main.c , texte.c , et text.h :

  • main.c - est le fichier avec la fonction principale (int main ) qui appelle une fonction depuis un autre fichier.
  • texte.c - est le fichier avec le que vous voulez imprimer "En savoir plus sur les Makefiles!".
  • texte.h - est le fichier d'en-tête avec les déclarations des fonctions. L'en-tête est inclus à la fois dans c fichiers avec le #include argument, qui a le même but que copier/coller le contenu de l'en-tête.

Les sections suivantes illustrent certains cas d'utilisation courants de make et Makefiles sur les trois fichiers mentionnés ci-dessus.

Remarque : Les exemples suivants sont écrits en langage C.

Créer un programme

Il existe deux manières de créer un programme :

  • Compiler les fichiers de manière standard en appelant le compilateur gcc. Cette méthode convient aux petits programmes.
  • Utiliser make et Makefiles.

Créer un programme avec le compilateur gcc

Utilisez le compilateur gcc uniquement pour les programmes simples. Sinon, utilisez Makefiles lorsque vous travaillez avec un grand nombre de fichiers.

Pour créer un programme avec le compilateur :

1. Ouvrez le terminal et accédez au répertoire contenant les fichiers.

2. Appelez le gcc compilateur et tapez le nom des deux c des dossiers. L'en-tête n'est pas compilé car il est déjà inclus dans c fichiers.

gcc main.c text.c

3. Lister tous les fichiers du répertoire courant avec le ls commande :

ls

Le terminal montre que le nouvel exécutable a.out fichier est créé. L'exécutable est également visible via un explorateur de fichiers :

Pour tester si la compilation a réussi, invoquez l'exécutable avec :

./a.out

Le terminal montre que l'exécutable fonctionne correctement.

Créer un programme avec Make et Makefiles

Compiler des fichiers avec make et Makefiles est plus simple que d'utiliser le compilateur. Commencez par créer un nouveau document texte dans le même répertoire et nommez-le Makefile ou makefile .

Ouvrez le fichier et utilisez la syntaxe de base du Makefile comme guide :

1. Tapez le nom du nouvel exécutable comme cible, par exemple, my_app.

2. Ajouter des fichiers objets main.o et text.o que les dépendances. Le make La commande recompile la cible à chaque fois que les fichiers objets changent.

3. Appuyez sur TAB et invoquez le gcc compilateur pour les fichiers objets :

<TAB> gcc main.o text.o

4. Ajoutez le -o marquez et nommez la cible my_app.

Après avoir écrit la première règle, le Makefile ressemble à ceci :

my_app: main.o text.o
<TAB> gcc main.o text.o -o my_app

Ensuite, indiquez au Makefile comment créer main.o :

1. Définissez main.o comme cible.

2. Tapez main.c comme dépendance. main.c sert à créer et mettre à jour main.o .

3. Écrivez la commande suivante pour mettre à jour main.o à chaque fois main.c modifications :

gcc -c main.c

4. Ajoutez le -c flag pour indiquer au Makefile de ne pas créer un nouvel exécutable mais seulement de lire le code et de compiler le fichier objet.

main.o: main.c
<TAB> gcc -c main.c

Pour créer text.o , définissez ce fichier comme cible et ajoutez à la fois text.c et text.h comme dépendances. Cependant, le gcc la commande ne compile que le text.c fichier, car les en-têtes ne sont jamais compilés :

text.o: text.c text.h
<TAB> gcc -c text.c

Enregistrez le Makefile et tapez make dans le terminal.

Le make la commande a créé deux fichiers objet (main.o et text.o ) et l'exécutable (my_app ).

Pour vérifier que make a créé de nouveaux fichiers, exécutez ls encore :

Le terminal montre que l'exécution de la commande a créé my_app . Pour exécuter my_app fichier, tapez :

./my_app

Mettre à jour le programme

Lorsqu'un fichier source est modifié, make ne met à jour que les fichiers objets en fonction de ce fichier source. Par exemple, pour modifier le texte affiché lors de l'exécution de my_app de "En savoir plus sur les Makefiles " à "Où suis-je ?" :

1. Ouvrez text.c dans l'éditeur de texte :

2. Remplacez le texte par "Où suis-je ?" :

3. Enregistrez le fichier, ouvrez le terminal et exécutez make :

Le make la commande a détecté des changements dans text.c et recompilé uniquement ce fichier.

Pour vérifier la modification, lancez l'exécutable :

./my_app

Compiler tous les fichiers

Pour compiler tous les fichiers et pas seulement les fichiers modifiés, utilisez -B ou --always-make options.

Par exemple, pour modifier le texte dans le text.c fichier vers "En savoir plus sur les Makefiles" et enregistrez le fichier, entrez :

make -B

La sortie montre que make compilé tous les fichiers du dossier, même ceux qui n'ont pas été modifiés.

Nettoyer les fichiers d'objets

Lorsqu'un utilisateur exécute make pour la première fois, la commande crée des fichiers objets et l'exécutable. Par conséquent, pour désencombrer le dossier source et nettoyer les fichiers objets, ajoutez le clean fonction au Makefile :

clean:
<TAB> rm *.o my_app

La commande se compose de :

  • La cible propre sans dépendances - la cible est toujours considérée comme obsolète et toujours exécutée.
  • Le rm commande - supprime les objets spécifiés.
  • Le *.o partie - correspond aux fichiers avec le o extension et nettoie les fichiers objets et my_app .

Pour nettoyer les fichiers objets, exécutez :

make clean

Après avoir exécuté ls encore une fois, le terminal montre que les fichiers objets et my_app ont été supprimés.

Exécuter make en mode débogage

Exécutez make en mode débogage pour afficher des informations supplémentaires sur le processus de compilation. Exécutez make avec le -d option pour afficher la sortie de débogage :

make -d

Utiliser un autre fichier comme 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 [file_name]

Par exemple, si un Makefile est nommé my_file , exécutez :

make -f my_file

Utiliser des variables

Les variables dans les Makefiles représentent plusieurs noms de fichiers, arguments, cibles, dépendances, commandes, répertoires source ou autres éléments. De plus, une variable est définie par un nom et représente une chaîne de texte appelée la valeur de la variable.

Pour définir une variable, utilisez = . Par exemple, remplacez gcc avec une variable C.

C=gcc

my_app: main.o text.o
<TAB> $ (C) main.o text.o -o my_app

main.o:main.c
<TAB> $ (C) -c main.c
        
text.o: text.c text.h
<TAB> $ (C) -c text.c

Lors de l'exécution de make dans le terminal, la commande lit le C variable comme gcc :

Conclusion

Après avoir parcouru les exemples de ce tutoriel, vous savez comment utiliser le make commande sous Linux et son fonctionnement.

Ensuite, téléchargez la feuille de triche des commandes Linux pour apprendre d'autres commandes Linux importantes.


Linux
  1. Commande de tri sous Linux avec des exemples

  2. commande chattr sous Linux avec des exemples

  3. Commande JQ sous Linux avec exemples

  4. ln Exemples de commandes sous Linux

  5. file Exemples de commandes sous Linux

Utilisation de la commande Cat sous Linux avec des exemples

Commande Linux WC avec exemples

Commande IP Linux avec exemples

Utilisation de la commande Linux mv avec des exemples

Commande de montage Linux avec exemples

Commande Linux gawk avec exemples