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