Compilacion estatica de un programa en C

Carlos Manuel Duclos Vergara carlos en embedded.cl
Vie Nov 5 22:00:16 CLST 2004


[...]

A ver, un par de aclaraciones. El enlace siempre se produce al momento
de compilar la unica diferencia entre una biblioteca "estatica" y una
"dinamica" es el agregar el codigo al programa o no. Notese que en el caso
de una biblioteca dinamica se agregan los entry points de la biblioteca 
al codigo, los que son resueltos en tiempo de ejecucion por el localizador que 
entrega la direccion real de un entry point (OJO! hay varios niveles
de indirecciones metidos en el cuento)


> Y como lo haces ?
> gcc cuanto mas ?

primero necesitas una biblioteca estatica de lo que requieres, 
generalmente estan "indexadas" para encontrar rapidamente el codigo. Por 
lo general esas bibliotecas tienen la extension .a en Linux. Las 
bibliotecas dinamicas por lo general tienen la extension .so y el 
localizador (en el caso GNU ld cumple los dos roles) debe saber como 
encontrarlas (para eso estan /etc/ld.so.conf y LD_LIBRARY_PATH).
El linkeado en ambos casos se produce de la misma manera, salvo que en el
segundo caso requeriras que la biblioteca se encuentre al momento de 
ejecutar el codigo (ojo que diferentes versiones de bibliotecas pueden 
variar sus entry points, lo que puede generar varios problemas desde que 
te reclame porque no encuentra simbolos hasta comportamiento erratico).

El comando en ambos casos es:
gcc <archivos .o> <bibliotecas> -o resultado

esperando que toda esta chachara le sirva a alguien, me despido

Xhau


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