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.
Si el rendimiento del hardware del sistema es insuficiente, cuando juegue o ejecute
MemcacheQ como un servicio de cola distribuida simple, porque no sé de MemcacheQ, muchas personas ha
alias es uno de los comandos del sistema Linux, se puede usar para personalizar el alias de otros co
En el sistema RedHat, debido a las necesidades de programación, necesita instalar e
Cómo encontrar el nombre de usuario y la contraseña restablecidos en el sistema Uuntu
Cómo usa Linux el comando ss para ver el estado del socket
Cómo administrar discos y archivos en el sistema Linux
Ejemplos de uso del contenedor Docker en Linux
La función del sistema Linux comando pwd
Cómo detectar bajo el nombre de dispositivo Linux y velocidad de escritura grabadora de DVD
Cómo configurar la red Mentohust en Ubuntu
El sistema Linux usa logrotate para cortar el método de registro de Tomcat.
Solución de fallas de arranque de grub2 en Linux
Cómo instalar y configurar los comandos rz /sz en Linux
¿Qué debo hacer si el archivo de Windows muestra caracteres ilegibles en Ubuntu?
¿Cuál es el nombre en clave para Win9? Realmente llamado win9?
WinXP puede ir directamente a Win10 con tecnología especial
Win7 usa la función de restauración para recuperar archivos perdidos.
Cómo editar y cargar las letras en los miles de escuchas
Resuelva el mensaje de actualización automática del sistema Vista 80070002 error
Siete habilidades para principiantes Mantenimiento mortal de la seguridad del servidor