Crear Bibliotecas y archivos .a para ligar los programas...
Salvador Ortiz Garcia
sog en msg.com.mx
Jue Feb 24 14:43:00 CST 2000
On Tue, 22 Feb 2000, Fito wrote:
>
> Hola lista !!!!
>
> Tengo una pregunta si quiero crear un archivo .so (una biblioteca)
> es sencillo no ??
Si.
> namas le das al compilar:
>
> gcc -shared -o libalgo.so algo.c
Preguntas o afirmas?
Por princio de cuentas hay dos tipos de bibliotecas, estáticas y
dinámicas.
Las primeras tendran terminación .a y las segundas, para cumplir con todas
las reglas terminación .so.X.Y.Z (X.Y.Z es la versión). En ambos casos y
para el el linker las encuentre, el nombre empezará con 'lib'.
En ambos casos necesitas tener una serie de archivos objeto, con
terminación .o con tus fuentes (.c) compilados.
La única diferencia al compilar es que para las bibliotecas dinámicas
requieres incluir la bandera -fPIC, por ejemplo:
gcc -c -fPIC -o algo.o algo.c
Nota que la salida 'algo.o' no es aún una biblioteca, es sólo codigo
objeto.
_Ya teniendo_ tus objetos procedes a crear la biblioteca, en el caso de
las estáticas lo haces con ar(1) y en el caso de las dinámicas lo haces
con el mismo gcc(1) (en estricto sentido lo haces con ld(1), pero esa es
otra historia), efectivamente usando -shared, por ejemplo:
gcc -shared -o libalgos.so algo.o ...
Notarás que en el ejemplo no le puse número de versión para mantenerlo
simple: en ld(1) encuentras más información sobre el 'soname'.
Respecto a las biblioteca estáticas, muchos Unixes requieren
post-procesarla con ranlib(1), en Linux, en cambio, no es necesario.
Por último, existe 'GNU libtool' que es una herramienta que facilita el
desarrollo de bibliotecas dinámicas. Las estáticas son triviales ;-)
Saludos
Salvador Ortiz
--
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux.org.mx
Para comandos adicionales, envíelo a: ayuda-help en linux.org.mx
Más información sobre la lista de distribución Ayuda