2009-04-07 7 views
22

Ho una libreria condivisa (* .so) creata utilizzando Real View Compiler Tools (RVCT 3.2) su Windows Target. Quindi provo a collegare questo file * .so con la mia applicazione usando gcc sul sistema linux.Collegamento di una libreria condivisa utilizzando gcc

Qual è l'opzione gcc per collegare questa libreria condivisa alla mia applicazione linux?

La mia domanda è, è l'opzione -shared, che viene utilizzato come

gcc -shared myfile.so 

..., usato per creare il SO file o per collegare il file SO? Credo che crei qualcosa del tipo:

gcc -lmyfile.so 

È sufficiente? O c'è qualche altro interruttore per dire al linker che si tratta di una libreria dinamica (oggetto condiviso)?

risposta

12

gcc -lmyfile dovrebbe essere sufficiente (a condizione che la libreria sia denominata libmyfile.so). Il linker cerca oggetti condivisi quando possibile e AFAIK li preferisce.

+0

Ho una domanda relativa: Nel caso in cui la mia libreria libmyfile.so è un link simbolico a libyourfile.so, si collega il mio programma utilizzando -lmyfile gcc ancora lavorare? (Devo mantenere la retrocompatibilità di alcuni client che non conoscono la modifica del nome della libreria.) – baskin

+3

@jpalecek Funziona se il nome del file ha l'estensione .dll? – saadtaame

+1

Cosa succede se la libreria non è in/usr/bin/ld'? –

18

Che cosa ha funzionato per me era:

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

grazie mille.it ha aiutato molto –

+0

cosa sta facendo questo comando? – Gaunt

+0

-L {percorso al file contenente la libreria} -l $ {nome della libreria} se ho una libreria denominata libmine.so in/home/newhall/lib /, quindi farei quanto segue per collegarlo al mio programma: $ gcc -o myprog myprog.c -L/home/newhall/lib -lmine [Sito di riferimento] (https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html) – Gowrav