Construcción de un makefile para compilar en C y Linux
Introducción
En mi empresa, www.autentia.com estamos
todo el día cambiando de aires: Lo mismo hacemos:
Una auditoria de código o un curso de formación, que una extensión de
Struts en Java, un componente ActiveX en Visual C++ o un porting a
Linux ….
Me ha tocado hacer esto último, compilar en Linux, y he tenido que refrescar
algunos conocimientos que aprovecho para compartir …
Navegando por Internet, encontré un documento que, por su elocuencia, he
decidido reproducir parcialmente (y a mi manera) para vosotros. Consiste en una
buena
explicación de como construir un fichero makefile. Os invito a visitar el enlace ya que este tutorial no tan completo como el
original
http://www.cs.famaf.unc.edu.ar/so2004/Lab1/Makefiles/img0.html
Construcción del fuente y compilación
En la siguiente pantalla podemos ver (sobre
Qemu) el primer ejemplo C en Linux. Con el comando gcc compilamos
El comando make utiliza un fichero llamado por defecto makefile
que, con una sintaxis especial, define las instrucciones a seguir para la
compilación. Si venís del mundo Java, los scripts de
ANT pueden ser considerados como la versión moderna de un make
Se define objetivos, dependencias y comandos
Cuando creamos más objetivos y asignamos dependencias make crea un
árbol que resolverá los comandos en el orden adecuado
Lo que empieza a en revesar (y dar potencia) los makefile son el uso
de variables comodines
- $(VAR) el contenido de la variable
- $@ el nombre del objetivo
- $< la primera dependencia (después de los dos puntos)
- $^ la lista de dependencias
Traducimos el makefile anterior usando las variables comodín
Podemos incluso establecer sustituciones en objetivos y dependencias de
fuentes para que tengan un comportamiento por defecto con su sola declaración
Y por último, podemos establecer distintos objetivos: Limpiar, compilar todo,
etc. y variables para que solo tocando al principio de nuestro fichero, podamos
reciclar los scripts …
Con un poco de imaginación e investigación podemos hacer que el mismo valga
para todos los proyectos (dejemos algo para los cursos)
Link de interés
http://www.cs.famaf.unc.edu.ar/so2004/Lab1/Makefiles/img0.html
Comentario final
Las modas aplican a todo .. incluso a la tecnología. En la época en el que
todo el mundo se mete a programar en Java/J2EE o .Net, no hay que olvidar que,
en muchos casos, o programas en C o no arreglas el problema.
Todos los que llevéis unos años en esto de la tecnología sabréis que no ha
tantas novedades como pensamos … es el mismo perro con distinto collar … por
lo que nos hace falta VISIÓN …..
Si en www.adictosaltrabajo.com
el personal de www.autentia.com
compartimos de un modo gratuito y anónimo tanto conocimiento es porque:
- Se puede encontrar lo mismo en libros o Internet, por lo que su valor es
subjetivo como tal (nos es útil a nosotros mismos como herramienta para
reaprovechar esfuerzos) - Porque a lo mejor, leyendo entre líneas alguien puede determinar que:
Nos gusta lo que hacemos, no nos paramos ante las barreras del conocimiento
y tenemos la VISIÓN que pueden necesitar vuestro equipos …..