LINUX

El comando ‘make’ de Linux explicado con ejemplos

los hacer El comando en Linux es uno de los comandos más utilizados por los administradores del sistema y los programadores. Si bien ayuda a los administradores a compilar e instalar muchas utilidades de código abierto a través de la línea de comandos, los programadores lo usan para administrar la compilación de sus proyectos grandes y complicados. En este artículo, discutiremos el funcionamiento interno del hacer comando junto con algunos ejemplos prácticos.

Cómo hacer El comando funciona

Para aquellos que no lo saben, el comando make acepta objetivos como argumentos de línea de comando. Estos objetivos generalmente se especifican en un archivo llamado ‘Makefile’, que también contiene la acción asociada correspondiente a los objetivos. Para obtener más información, lea nuestra serie de artículos sobre cómo funcionan los Makefiles.

Cuando el comando make se ejecuta por primera vez, escanea el Makefile para encontrar el objetivo (proporcionado) y luego lee sus dependencias. Si estas dependencias son objetivos en sí mismos, escanea el Makefile en busca de estos objetivos y construye sus dependencias (si las hay), y luego las construye. Una vez que se compilan las dependencias principales, se compila el objetivo principal (que se pasó al comando make).

Ahora, suponga que realiza un cambio en un solo archivo fuente y vuelve a ejecutar el comando make, solo compilará los archivos objeto correspondientes a ese archivo fuente y, por lo tanto, ahorrará mucho tiempo en la compilación del ejecutable final.

comando linux make

hacer ejemplos de comandos

A continuación, se muestran los detalles del entorno de prueba utilizado para este artículo:

  • SO – Ubuntu 13.04
  • Shell – Bash 4.2.45
  • Aplicación – GNU Make 3.81

A continuación se muestran los contenidos del proyecto:

$ ls
anotherTest.c Makefile test.c test.h

y aquí están los contenidos del Makefile:

all: test

test: test.o anotherTest.o
        gcc -Wall test.o anotherTest.o -o test

test.o: test.c
        gcc -c -Wall test.c

anotherTest.o: anotherTest.c
        gcc -c -Wall anotherTest.c

clean:
        rm -rf *.o test

Ahora, echemos un vistazo a algunos de los ejemplos del uso del comando make en Linux.

1) Un ejemplo sencillo

Para compilar el proyecto, puede simplemente usar ‘make’ o puede usar el objetivo ‘all’ con el comando make.

$ make
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test

Entonces puede ver que el comando make primero crea las dependencias y luego el objetivo real.

Si echa un vistazo al contenido del directorio, habrá archivos .o y archivos ejecutables en él:

$ ls
anotherTest.c anotherTest.o Makefile test test.c test.h test.o

Ahora, suponga que hace algún cambio en test.cy vuelve a compilar el proyecto con make:

$ make
gcc -c -Wall test.c
gcc -Wall test.o anotherTest.o -o test

Entonces puede ver que solo se vuelve a compilar test.o, mientras que anotherTest.o no se vuelve a compilar.

Ahora, para limpiar todos los archivos de objeto junto con el ejecutable de ‘prueba’, puede usar el objetivo ‘limpiar’:

$ make clean
rm -rf *.o test

$ ls
anotherTest.c Makefile test.c test.h

Entonces puede ver que se eliminaron todos los archivos .o y la ‘prueba’ ejecutable.

2) Siempre haga todos los objetivos a través de la opción -B

A estas alturas, probablemente sepa que el comando make no compila los archivos que no han cambiado desde la última vez. Pero, si desea anular el comportamiento predeterminado de la marca, puede usar la opción -B.

Aquí hay un ejemplo :

$ make
make: Nothing to be done for `all'.

$ make -B
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test

Entonces puede ver que mientras que el comando ‘make’ no compiló ningún archivo, ‘make -B’ compiló a la fuerza todos los objetos junto con el ejecutable final.

3) Imprima la información de depuración usando la opción -d

Si desea una descripción detallada de lo que realmente hace el comando make cuando se ejecuta, use la opción -d.

Aquí hay un ejemplo :

$ make -d | more
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
Reading makefiles...
Reading makefile `Makefile'...
Updating makefiles....
Considering target file `Makefile'.
Looking for an implicit rule for `Makefile'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.o'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.c'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.cc'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.C'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.cpp'.
Trying pattern rule with stem `Makefile'.
--More--

Es una salida larga. Puedes ver que usé el más comando para ver la salida página por página. Tienes que verlo por ti mismo para tener una mejor idea de los detalles que esta opción es capaz de producir.

4) Cambie el directorio usando la opción -C

Puede proporcionar una ruta de directorio diferente al comando make, al que cambiaría antes de buscar un Makefile.

Aquí hay un ejemplo. Suponga que se encuentra actualmente en este directorio:

$ ls
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt

Pero desea ejecutar make con el Makefile guardado en ../make-dir/. Así que esto es lo que tienes que hacer:

$ make -C ../make-dir/
make: Entering directory `/home/himanshu/practice/make-dir'
make: Nothing to be done for `all'.
make: Leaving directory `/home/himanshu/practice/make-dir'

Entonces puede ver que el comando make cambió al directorio especificado, se ejecutó allí y luego volvió a cambiar.

5) Trate cualquier otro archivo como ‘Makefile’ a través de la opción -f

Si desea cambiar el nombre de su Makefile para decir ‘my_makefile’ o cualquier otro nombre, y desea que el comando make lo trate como el ‘Makefile’ predeterminado, puede usar la opción -f para esto.

Aquí hay un ejemplo :

make -f my_makefile

De esta manera, el comando make seleccionará y escaneará my_makefile en lugar de Makefile.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar