2009-04-07 26 views
22

Tengo una biblioteca compartida (* .so) creada con Real View Compiler Tools (RVCT 3.2) en Windows target. Luego trato de vincular este archivo * .so con mi aplicación usando gcc en el sistema Linux.Vinculación de una biblioteca compartida mediante gcc

¿Cuál es la opción de gcc para vincular esta biblioteca compartida con mi aplicación linux?

Mi pregunta es, es la opción -shared, que se utiliza como

gcc -shared myfile.so 

..., que se utiliza para crear el archivo SO o para enlazar el archivo SO? Creo que crea algo como:

gcc -lmyfile.so 

¿Es esto suficiente? ¿O hay otro cambio para decirle al vinculador que se trata de una biblioteca dinámica (objeto compartido)?

Respuesta

12

gcc -lmyfile debería ser suficiente (siempre que su biblioteca se llame libmyfile.so). El vinculador busca objetos compartidos siempre que sea posible y AFAIK los prefiere.

+0

Tengo una pregunta relacionada: En el caso de mi biblioteca libmyfile.so es un enlace simbólico a libyourfile.so, se une mi programa usando gcc -lmyfile siguen trabajando? (Necesito mantener la compatibilidad con versiones anteriores de ciertos clientes que desconocen el cambio de nombre de la biblioteca). – baskin

+3

@jpalecek ¿Funciona si el nombre del archivo tiene la extensión .dll? – saadtaame

+1

¿Qué sucede si la biblioteca no está en '/ usr/bin/ld'? –

18

Lo que funcionó para mí fue:

gcc -L. -l:myfile.so 
+0

muchas gracias. Ayudó mucho –

+0

¿Qué está haciendo este comando? – Gaunt

+0

-L {ruta al archivo que contiene la biblioteca} -l $ {nombre de la biblioteca} si tengo una biblioteca llamada libmine.so en/home/newhall/lib/entonces haría lo siguiente para vincularla a mi programa: $ gcc -o myprog myprog.c -L/home/newhall/lib -lmine [Sitio de referencia] (https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html) – Gowrav

Cuestiones relacionadas