2009-04-07 5 views
22

J'ai une bibliothèque partagée (* .so) créée à l'aide des outils du compilateur Real View (RVCT 3.2) sur la cible Windows. Ensuite, j'essaie de lier ce fichier * .so avec mon application en utilisant gcc sur le système Linux.Liaison d'une bibliothèque partagée à l'aide de gcc

Quelle est l'option gcc pour lier cette bibliothèque partagée avec mon application linux?

Ma question est, est l'option -shared, qui est utilisé comme

gcc -shared myfile.so 

..., utilisé pour créer le fichier SO ou pour lier le fichier SO? Je crois que cela crée quelque chose comme:

gcc -lmyfile.so 

Est-ce suffisant? Ou y at-il un autre commutateur pour indiquer au lieur qu'il s'agit d'une bibliothèque dynamique (objet partagé)?

Répondre

12

gcc -lmyfile devrait suffire (à condition que votre bibliothèque soit nommée libmyfile.so). L'éditeur de liens recherche les objets partagés lorsque cela est possible et AFAIK les préfère.

+0

J'ai une question connexe: Dans le cas où ma libmyfile.so bibliothèque est un lien symbolique vers libyourfile.so, va relier mon programme en utilisant -lmyfile gcc encore travailler? (J'ai besoin de maintenir la rétrocompatibilité de certains clients qui ne sont pas conscients du changement de nom de la bibliothèque.) – baskin

+3

@jpalecek Cela fonctionne-t-il si le nom de fichier a l'extension .dll? – saadtaame

+1

Que faire si la bibliothèque n'est pas dans '/ usr/bin/ld'? –

18

Ce qui a fonctionné pour moi était:

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

merci beaucoup.il a beaucoup aidé –

+0

que fait cette commande? – Gaunt

+0

-L {chemin d'accès au fichier contenant la bibliothèque} -l $ {nom de la bibliothèque} si j'ai une bibliothèque nommée libmine.so dans/home/newhall/lib/alors je ferais la chose suivante pour la lier à mon programme: $ gcc -o monprog myprog.c -L/home/newhall/lib -lmine [Site de référence] (https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html) – Gowrav

Questions connexes