Linux cómo usar el comando make

  

en el sistema Linux, el comando make se usa generalmente con el Makefile, entonces, ¿cuál es el uso del comando make? La siguiente serie pequeña le presenta el uso del comando make en Linux. Echémosle un vistazo.

en el desarrollo de un sistema, un sistema se divide típicamente en varios módulos, esto mejora la capacidad de mantenimiento del sistema, pero debido a la inevitable presencia de correlación entre los diferentes módulos, de modo que cuando un cambio módulo Después de eso, otros módulos pueden actualizarse. Por supuesto, para sistemas pequeños, la compilación manual de la conexión no es un problema, pero si es un sistema grande, hay muchos módulos, entonces el método de compilación manual no es aplicable. Por esta razón, en el sistema Linux, se proporciona un comando make para mantener automáticamente el archivo de destino. En comparación con la compilación y conexión manual, la ventaja del comando make es que solo actualiza el archivo modificado (en Linux, se crea un archivo o Después de la actualización, hay una última hora de modificación. El comando make usa esta última hora de modificación para determinar si el archivo ha sido modificado. Sin embargo, el archivo no modificado se ignora y el comando make no pierde un archivo que deba actualizarse.

Puede haber dependencias entre archivos y archivos o entre módulos o módulos. El comando make también se mantiene en función de esta dependencia, por lo que debemos entender qué es una dependencia, el comando make ciertamente no se conoce por sí mismo. Estas dependencias requieren que el programador escriba estas dependencias en un archivo llamado makefile. El Makefile contiene algunos objetivos. Por lo general, el destino es el nombre del archivo. Para cada objetivo, se proporciona un conjunto de comandos para lograr este objetivo y se proporcionan otros objetivos o nombres de archivos que dependen del objetivo. El siguiente es un sencillo Makefile simple. Ejemplo:

#a Makefile simple

prog: prog1.o prog2.o

gcc prog1.o prog2.o -o prog

prog1 .o: prog1.c lib.h

gcc -c -I. -o prog1.o prog1.c

prog2.o: prog2.c

gcc - c prog2.c

El archivo Mame anterior define tres objetivos: prog, prog1 y prog2. Después de los dos puntos aparece una lista de archivos dependientes;

Para el primer prog de archivo objetivo, tiene Dos archivos dependientes: prog1.o y prog2.o, cualquier actualización de archivo dependiente, prog también se actualizará, el comando gcc prog1.o prog2.o -o prog es el comando para generar prog. Verifique si el objetivo debe actualizarse con un método recursivo. Recursion actualiza el objetivo obsoleto desde abajo hacia arriba y el objetivo se actualiza solo cuando todos los objetivos de los que depende un objetivo están actualizados. Tomando el Makefile anterior como ejemplo, modificamos prog2.c Cuando ejecutamos make, ya que el prog objetivo depende de prog1.o y prog2.o, primero debemos verificar si prog1.o y prog2.o están desactualizados y el prog1.o objetivo depende de prog1. .c y lib.h, ya que no modificamos los dos archivos, no caducaron, luego verificaron el prog2.o objetivo, él confía en prog2.c, ya que modificamos prog2.c, así que prog2.c Más reciente que el archivo de destino prog2.o, es decir, el programa prog2.o expira, lo que hace que todos los objetivos que dependen de prog2.o estén desactualizados, por lo que make actualizará prog2.o primero y luego actualizará prog.

Si una línea es demasiado larga y ha llegado al borde derecho del editor de texto, se puede usar una barra invertida () como nueva línea. Todas las líneas conectadas por la barra invertida se tratan como una sola línea; además, en el Makefile Se permiten comodines (? O *) para los nombres de archivo involucrados.

A veces, para simplificar la escritura de comandos, puede definir algunas macros y usar abreviaturas en el Makefile. Aquí hay algunas abreviaturas de uso común:

$ @ representa el nombre completo del objetivo

$ * representa el nombre de destino para el que se ha eliminado el sufijo

$ "El primer nombre de destino relacionado que representa el objetivo

Ahora puede usar las abreviaturas para modificar el Makefile anterior en consecuencia:

#Utilice el Makefile abreviado

prog: prog1.o prog2.o

gcc prog1.o prog2.o -o $ @

prog1. o: prog1.c lib.h

gcc -c -I. -o $ @ $ "

prog2.o: prog2.c

gcc -c $ * .c

En un proyecto, es posible usar el mismo archivo ac en varios destinos. Si el archivo se modifica más adelante, deberá modificar todos los acs en el Makefile. Esto es más problemático y puede definir macros para resolver Para este problema, las macros pueden hacer que los Makefiles sean más claros:

#Makefiles usando abreviaturas y macros

MARCO = prog1.o prog2.o

prog: $ (MARCO)

Gcc prog1.o prog2.o -o $ @

prog1.o: prog1.c lib.h

gcc -c -I. -O $ @ $ "

prog2.o: prog2.c

gcc -c $ *. c

Para proyectos grandes, los Makefiles escritos a mano son muy complicados, y el software GNU estándar (como Apacle) Ejecute un archivo de configuración para generar el Makefile; automake del software GNU y autoconf son herramientas para generar automáticamente la configuración. Los desarrolladores solo necesitan definir primero la macro. Después del procesamiento automático, se generará Makefine.in para autoconf y luego se configurará con autoconf. Para utilizar automake y autoconf debe instalar: GNU Automake, GNU Autoconf, GNU m4, perl y GNU Libtool.

Lo anterior es el uso del comando make en Linux. Explíquelo mediante el ejemplo de Makefile. Creo que tiene cierta comprensión del uso del comando make. El comando make también se puede usar para ejecutar el archivo de destino.

Copyright © Conocimiento de Windows All Rights Reserved