2009-04-07 11 views
22

Mam udostępnianą bibliotekę (* .so) utworzoną przy użyciu narzędzi widoku kompilatora Real View (RVCT 3.2) na docelowym systemie Windows. Następnie próbuję połączyć ten plik * .so z moją aplikacją, używając gcc w systemie linux.Łączenie biblioteki współużytkowanej przy użyciu gcc

Co to jest opcja gcc, aby połączyć tę udostępnioną bibliotekę z moją linuxem aplikacji?

Moje pytanie brzmi, czy opcja -shared, który jest używany jako

gcc -shared myfile.so 

..., wykorzystywane do tworzenia SO plik lub połączyć SO plik? Wierzę, że tworzy coś takiego:

gcc -lmyfile.so 

Czy to wystarczy? Czy jest jakiś inny przełącznik informujący linker, że jest to biblioteka dynamiczna (obiekt udostępniony)?

Odpowiedz

12

gcc -lmyfile powinno wystarczyć (pod warunkiem, że biblioteka ma nazwę libmyfile.so). Łącznik szuka obiektów wspólnych, kiedy to możliwe, a AFAIK je preferuje.

+0

Mam powiązane pytanie: w przypadku moim libmyfile.so biblioteka jest dowiązaniem do libyourfile.so będzie łącząc mój program przy użyciu gcc -lmyfile nadal działa? (Muszę zachować kompatybilność wsteczną niektórych klientów, którzy nie są świadomi zmiany nazwy biblioteki.) – baskin

+3

@jpalecek Czy to działa, jeśli nazwa pliku ma rozszerzenie .dll? – saadtaame

+1

Co zrobić, jeśli biblioteka nie znajduje się w katalogu '/ usr/bin/ld'? –

18

Co pracował dla mnie było:

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

dziękuję bardzo. Bardzo pomógł –

+0

co robi to polecenie? – Gaunt

+0

-L {ścieżka do pliku zawierającego bibliotekę} -l $ {nazwa biblioteki} jeśli mam bibliotekę o nazwie libmine.so w katalogu/home/newhall/lib /, wykonaj następujące czynności, aby połączyć ją z moim programem: $ gcc -o myprog myprog.c -L/home/newhall/lib -lmine [Strona referencyjna] (https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html) – Gowrav