GNU Autotools, aplicaciones para todos

>Cuando descargamos el código fuente de cualquier aplicación, observamos que las instrucciones de compilación e instalación suelen ser tan simples como llevar a cabo tres sencillos pasos, sea cual sea nuestro sistema operativo:

  1. ./configure
  2. make
  3. make install

Pero, ¿qué estamos realizando realmente? ¿Qué utilidad tienen estos archivos y comandos? Estos ficheros contienen tanto la información necesaria para instalar la aplicación correspondiente en nuestro sistema, como para conseguir que la instalación sea adecuada a nuestro sistema (versión de SO, de compilador, de librerías, etc.). Para entender cómo se crea cada uno de los ficheros principales y su utilidad, vamos a hablar de las AutoTools, así como de la herramienta make.

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 máquina 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:

Para más información podemos consultar las guías de cada una de las aplicaciones en sus páginas: Make, Automake, Autoconf y Libtool.

Comparte esta entrada: