Next: El debugger de UNIX:
Up: Linux para Programadores
Previous: Programas multi-módulo
El trabajar con programas multi-módulo tiene una desventaja: cuando nos
damos cuenta, tenemos muchos ficheros que contienen funciones de biblioteca
y no recordamos
que dependencias existen entre ellos. Por ejemplo, supongamos que retocamos
un fichero de biblioteca y que lo recompilamos, pero de este fichero dependen
una larga lista de ficheros también de biblioteca. Deberemos recompilar
cada uno de ellos si deseamos que los cambios realizados se noten en el
programa que estamos desarrollando. Para solventar este problema,
UNIX tiene la utilidad make que recompilará aquellos ficheros
que necesiten ser recompilados, tras una modificación. La sintaxis de este
comando es:
-
- make -f makefile
El fichero makefile es un fichero texto que contiene las dependencias
entre ficheros necesarias para que make trabaje. Por defecto, make
buscará un fichero llamado makefile o Makefile en el directorio
de trabajo. Si el nombre de fichero de dependencias no es éste, o está en
otro directorio deberemos indicar su nombre a través del flag -f .
La forma general de un fichero makefile es:
OBJETIVO: lista de dependencias con otros objetivos anteriores
lista de comandos a realizar par conseguir OBJETIVO
Por ejemplo, un makefile para nuestro programa reverse podría
ser:
width 3pt
width .3pt415pt#
# makefile para 'reverse'
#
#
# El fichero 'Reverse.o' depende de los fichero 'Reverse.c'
y 'Reverse.h'.
# Si uno de ellos es modificado, entonces se ejecuta el comando:
# cc -c Reverse.c -o Reverse.o
# que compila la función y crea un fichero llamado 'Reverse.o'
#
Reverse.o: Reverse.c Reverse.h
cc -c Reverse.c -o Reverse.o
#
# El fichero ejecutable 'reverse' sera compilado si cambia el fichero
# 'Reverse.o' o 'reverse.c'.
#
reverse: Reverse.o reverse.c
cc reverse.c Reverse.o -o reverse
width .3pt
depth .3pt
width -3pt
Para compilar el programa reverse escribiremos:
width 3pt
width .3pt415ptdali: % make reverse
cc -c Reverse.c -o Reverse.o
cc reverse.c Reverse.o -o reverse
dali: %
width .3pt
depth .3pt
width -3pt
Debemos de dar el parámetro reverse porque este es el objetivo
final que va a conseguir la utilidad make . Si deseamos que únicamente
se genere Reverse.o, debiéramos de escribir:
width 3pt
width .3pt415ptdali: % make Reverse.o
cc -c Reverse.c -o Reverse.o
dali: %
width .3pt
depth .3pt
width -3pt
No es necesario escribir make -f makefile reverse porque make
busca por defecto el fichero makefile. La utilidad make puede
usarse en general para establecer dependencias entre ficheros de cualquier
clase, por ejemplo, para ficheros en formato TEX. Por último, cuando
intentamos compilar y no hemos realizado ninguna modificación, make
no trabaja y nos presenta el siguiente mensaje:
width 3pt
width .3pt415ptdali: % !!
make reverse
make: `reverse' is up to date.
dali: %
width .3pt
depth .3pt
width -3pt
El debugger de UNIX: dbx
Next: El debugger de UNIX:
Up: Linux para Programadores
Previous: Programas multi-módulo
Vicente González Ruiz
1998-07-13