[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: Crear Bibliotecas y archivos .a para ligar los programas...



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



[Hilos de Discusión] [Fecha] [Tema] [Autor]