2010-04-06 11 views
8

Mam projekt w moim IDE. Muszę udostępnić jej wspólną bibliotekę do wykorzystania w rozszerzeniach. Nie chcę tworzyć kopii tego projektu z ustawieniami biblioteki współdzielonej. Czy istnieje sposób na zbudowanie wspólnej biblioteki przy użyciu plików obiektów (.o) z mojego już istniejącego projektu? Jak rozumiem, mogę napisać plik Makefile.Tworzenie udostępnianej biblioteki z istniejących plików obiektów

Odpowiedz

13

Zakładam, że jesteś na jakimś Unix i prawdopodobnie za pomocą toolchain GNU. W takim przypadku, aby utworzyć odpowiednią bibliotekę współużytkowaną, musisz skompilować swój kod, używając niezależnych od pozycji flag (-fpic lub -fPIC), zanim będziesz mógł utworzyć bibliotekę współdzieloną. O ile twoje pliki .o nie są już skompilowane z tymi flagami, prawdopodobnie nie skończysz z działającą wspólną biblioteką.

Jeśli są już skompilowane dla kodu niezależnego od pozycji, zwykły g++ -shared ... powinien załatwić sprawę.

+2

+1 Zapomniałem wspomnieć, że pliki obiektowe również wymagają fpic. – pajton

+2

@pajton - Zgadnij kto został przez to złapany :). –

7

g++ -shared -fPIC -o myshared.so *.o

Powiązane problemy