pDI-Tools: Mecanismo de interposición dinámica de código | ||
---|---|---|
Anterior | Capítulo 3. Portabilidad e implementación en las diferentes plataformas | Siguiente |
Seguidamente explicamos el entorno de trabajo que se ha establecido para desarrollar pDI-Tools.
Habitualmente el entorno del programador y el entorno usado para compilar la aplicación suele ser el mismo. Es decir, si un usuario desea compilar una aplicación generalmente hace uso del mismo entorno de desarrollo que el programador. Con las herramientas Autoconf y Automake no es exactamente así.
Las herramientas Autoconf y Automake separan el desarrollo del entorno de programación y distribución. De hecho, estas herramientas motivan a que se distribuya el código y que la compilación forme parte de la distribución del programa.
Esto es algo muy propio del software libre y rara vez visto en software comercial. El software comercial suele venir empaquetado, cerrado y preparado para instalar. No te da oportunidad de ajuste más que las opciones de configuración que se hayan decidido poner en él. El software libre viene directamente con el código fuente a la vista, invitando a que se compruebe lo que hace, que se modifique y se ajuste tanto como se desee a las necesidades del usuario.
Las herramientas Autoconf y Automake se encargan de simplificar el proceso de compilación de la aplicación, automatizando la toma de decisiones para poder compilar el programa sobre la plataforma que se pretende ejecutar.
Estas herramientas se encargan de escribir una serie de "scripts" para la "shell" capaces de construir y configurar la aplicación en muchos sistemas distintos. Al ser "scripts" sencillos en una "shell" muy común, sh(1), garantizamos que funcionarán en una amplia variedad de sistemas.
Estos "scripts" se generan por las aplicaciones Autoconf y Automake. Son dos programas escritos en el lenguaje de macros m4(1). De la ejecución de estos programas saldrán un montón de "scripts" para sh(1) capaces de configurar la aplicación y generar los ficheros make necesarios.
Una vez generados estos ficheros no volverá ser necesario disponer de un intérprete del lenguaje m4(1), y por lo tanto la aplicación se podrá compilar en casi cualquier sistema.
Además estas herramientas son capaces de dejar la construcción del programa a medias para poder distribuir luego parte de los ficheros generados y así eliminar programas necesarios a la hora de compilar. Por ejemplo, supongamos que nuestra aplicación usa un parser generado por bison(1). En principio esto obligaría a todo usuario que quisiera compilar la aplicación a instalar bison(1). Pero Autoconf permite indicar que se genere y distribuya el fichero .c creado por bison(1). De esta forma el usuario podrá compilar el programa sin disponer de bison(1).
Todo esto sumado hace que sea muy fácil portar pDI-Tools a otras plataformas: si se es cuidadoso no es necesario ni disponer siquiera de todas las herramientas usadas para desarrollarlo. En principio es suficiente con la "shell" sh(1), un compilador de C, un make y, en caso de necesitarse, un ensamblador.
Respecto a la herramienta make sólo diremos que nos sirve cualquiera. Aunque make es una herramienta que presenta una gran compatibilidad entre diferentes versiones de fabricantes, Automake genera ficheros makefile tan simples que rara vez dan problemas. Y si una determinada versión de make da problemas, Autoconf lo detecta y avisa a Automake para que genere un makefile específico.
El compilador escogido para desarrollar pDI-Tools ha sido GNU C Compiler. GNU C Compiler es el compilador que soporta mejor los estándares además de estar disponible para casi cualquier plataforma. Además es software libre por lo cual garantizamos que nunca estaremos atados a una determinada marca o arquitectura.
En el caso de GNU/Linux™ sobre INTEL® 386 también es necesario usar un ensamblador. El ensamblador usado es GNU Assembler, que acompaña a GNU C Compiler.
El resto de herramientas usadas para desarrollar pDI-Tools como OpenJade, xsltproc, etc. no afectan a la construcción del software, sino tan sólo a la generación de la documentación. Para evitar hacer disponer y configurar estas herramientas se entrega la documentación ya generada.