Compilar en C y Linux con make (makefile)

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 …..