Mam projekt C++ (g ++/raw Makefile) zaprojektowany dla Linuksa, kiedyś statycznie łączyłem wszystko, co działało dobrze przez wieki. Teraz chcę budować pliki binarne zarówno statycznie, jak i dynamicznie. Następująca komenda jest używana w moim Makefile do zbudowania biblioteki dynamicznej (np. Libtest):jak używać mojej własnej biblioteki dynamicznej w Linuksie (Makefile)
$ (CXX) -shared -Wl, -soname, libtest.so.1 -o libtest.so.1.0.0 $ (LIBTEST_OBJS)
wyjście jest libtest.so.1.0.0 który ma tak nazwać libtest.so.1
znalazłem przynajmniej dowiązania symbolicznego libtest.so -> libtest.so.1.0.0 jest wymagane, aby połączyć mój program klienta, który faktycznie korzysta z powyższej wygenerowanej biblioteki libtest.so.1.0.0.
Oto moje pytanie, czy chcę zbudować oprogramowanie, jaki jest standardowy sposób zarządzania powyższym dowiązaniem symbolicznym? Oczywiście nie chcę tych dodatkowych rzeczy w moim katalogu źródłowym, ale wymagane jest zbudowanie mojego pliku binarnego klienta, czy powinienem utworzyć go jako łącze tymczasowe do budowania klienta, a następnie usunąć go po zakończeniu? czy powinienem utworzyć katalog do hostowania biblioteki .so i jej linków i pozostawić wszystko, dopóki nie zrobię "make install", aby zainstalować je w innych określonych katalogach? Teraz będzie fajnie, jaki jest standardowy sposób robienia tego.
A może sposób generowania bibliotek jest nieprawidłowy? powinienem po prostu wygenerować libtest.so (jako rzeczywistą bibliotekę, a nie link), aby połączyć mój plik wykonywalny, a następnie zmienić nazwę biblioteki i utworzyć te linki podczas robienia `` make install ''?
każde wejście zostanie docenione. :)
+1 Używanie libtool ułatwi, kiedy ostatecznie zdecydujesz się przenieść go z Linuksa na coś innego - libtool obsługuje wszystkie zależne od platformy problemy bibliotek współdzielonych. –