- ./configure
- make
- make install
La herramienta Make, es una aplicación dedicada a la optimización de los procesos de compilación y enlace de los distintos archivos de un proyecto. Esta herramienta realiza las operaciones según los patrones indicados en un archivo llamado Makefile, el cual contiene una serie de instrucciones a realizar según la acción que deseemos llevar a cabo. A cada una de estas acciones se denomina objetivo. Los objetivos que habitualmente podemos encontrar en un makefile son: install, clean, remove... Pero, generar el archivo Makefile puede ser muy complejo, puesto que los proyectos pueden ser muy grandes y, por otro lado, dicho fichero deberá ser diferente en cada maquina que lo ejecute dependiendo de su configuración particular.
Es aquí donde surgen las llamadas Autotools, formadas por las herramientas Autoconf, Automake y Libtool. Dichas herramientas están enfocadas a conseguir la máxima portabilidad en las aplicaciones, evitando así que debamos generar un fichero Makefile único para cada instalación, ya que ellas se encargan de generar una serie de ficheros parametrizados independientes del sistema. Vamos a ver la utilidad de cada una de ellas:
- Autoconf. Con esta herramienta conseguimos portabilidad en la instalación de aplicaciones. De esta forma, conseguiremos un fichero ejecutable llamado configure, capaz de detectar la configuración del sistema y crear un fichero Makefile (a partir de otro inicial y de un fichero de configuración generado con autoheader) de forma que sea correcto para nuestro ordenador.
- Automake. En el punto anterior hemos visto la necesidad de tener un Makefile previo para poder desarrollar el fichero de instalación final. Para la construcción de dicho fichero, utilizamos la herramienta Automake, que generará un fichero Makefile.in que servirá para conseguir nuestro Makefile final, tras la ejecución de configure.
- Libtool. Es una herramienta para crear, enlazar y cargar bibliotecas tanto estáticas como dinámicas.
Finalmente, y de forma simplificada, el proceso para alcanzar un Makefile ejecutable es el que podemos ver en el siguiente gráfico: