Compilacion estatica de un programa en C

Alvaro Herrera Munoz alvherre en dcc.uchile.cl
Sab Nov 6 11:41:11 CLST 2004


On Fri, Nov 05, 2004 at 08:20:14PM +0000, Roger D. Vargas wrote:
> El vie, 05-11-2004 a las 23:34, Felipe Cristian Barriga Richards (Lista)
> escribió:
> 
> > |
> > | Supongo que puedes llevar las librerias SDL y ponerlas en algun lugar
> > | (quizas hasta la carpeta de  la aplicacion), luego usas una variable de
> > | entorno que no recuerdo ahora para especificar el camino.
> > Ummmm se que se puede, pero no se la variable :( tampoco (alguna vez en
> > mi vida la supe).
>
> LD_LIBRARY_PATH o algo asi. Se que las usaba para poder cargar las
> librerias de ogre3d que tenia en el directorio de un proyecto. Pero
> exactamente como era no lo recuerdo.

Refacil.  Pones las bibliotecas en /un/path/cualquiera
y luego ejecutas la aplicacion con
LD_LIBRARY_PATH=/un/path/cualquiera /path/a/aplicacion

Con eso, ld.so (el enlazador dinamico) va a buscar las bibliotecas que
necesite en /un/path/cualquiera.

Sin embargo a mi esta solucion me parece algo sucia.  Una alternativa
algo mejor seria ponerle -rpath a las bibliotecas.  Asi el enlazador
dinamico va a saber automaticamente donde buscarlas sin necesidad de
especificar LD_LIBRARY_PATH.

Claro que esto tambien es sucio, sobre todo si necesitas compilar SDL
tu mismo solo para esto.

IMO la solucion correcta es declarar la dependencia de tu programa.
Una manera sencilla es crear un paquete RPM/DEB, en el cual indicas
la dependencia en la biblioteca SDL y demas.  Asi el que lo instale
simplemente instala las bibliotecas que necesita y ya.
Cualquiera otra forma de hacerlo me parece buscarle cinco patas
al gato.

-- 
Alvaro Herrera (<alvherre[@]dcc.uchile.cl>)
"The Gord often wonders why people threaten never to come back after they've
been told never to return" (www.actsofgord.com)


Más información sobre la lista de distribución Linux