junio 17, 2006

Enlazar estáticamente un ejecutable

Echando mano del manual sobre librerías de linux, vemos que los pasos a seguir para coseguir un ejecutable que no necesite tirar de librerías en el sistema son los siguientes:
  • Compilamos todo lo que necesita nuestro programa

  • El ejecutable normal tirará de librerías propias y de sistema.

  • Necesitamos las librerías estaticas .a a mano para enlazar contra ellas, esto se consigue normalmente instalando los paquetes "-dev", o generandolas a manubrio.

  • Usaremos el comando "gcc -static" y le indicaremos el directorio donde se encuentran y las las librerías necesarias.


Siguiendo con el ejemplo de mostar las librerías dinámicas usadas por rrdtool:

# make
# cd src
# gcc -static -g -O2 -o rrdtool -L/usr/lib/ ./.libs/librrd.a -lfreetype -lpng -lz -lart_lgpl_2 -lm
# ldd rrdtool
not a dynamic executable

Con esto conseguimos que ese único ejecutable funcione por si mismo y sin dependencias en el sistema, ahora podemos copiarlo a un equipo sin las freetype, png, etc y arracará sin problemas.

Tags:

comentarios: