Tworzę aplikację wieloplatformową i mam problem z dystrybucją pliku binarnego systemu Linux. W Windows dll były -libsndfile-1.dll lua5.1.dll lua51.dll openal32.dll sfml-audio.dll sfml-graphics.dll sfml-network.dll sfml-system.dll sfml-window.dll
To jest bardzo wczesna wersja wstępna, więc nie chcę pisać pakietu. Chcę tylko, aby użytkownik pobrał plik tarball i uruchomił plik binarny. Jakie są typowe sposoby uzyskiwania tych zależności w systemie Linux bez pisania pakietu?
PS Mam także system Linux 64-bitowy, a jeden użytkownik zgłosił, że aplikacja nie działała na jego 32-bitowym systemie Linux. Co może być problemem? Nie miałem tego problemu z systemem Windows (zbudowany na systemie 64-bitowym, działa na 32-bitach).
Odpowiedzi:
Nie jestem pewien, czy jest to dokładnie to, czego szukasz, ale zwykle to, co zrobiono w przypadku programów Linux, to lista zależności na stronie internetowej, na której oferujesz produkt do pobrania. W twoim przypadku coś takiego
(Oczywiście, podaj również numery wersji, jeśli twój program działa tylko z niektórymi wersjami). Następnie użytkownik systemu Linux sprawdzi swojego menedżera pakietów, aby upewnić się, że ma je wszystkie przed próbą zainstalowania programu.
Niektóre programy są dystrybuowane w sposób wyjaśniony przez Ignacio, tj. Zawierają wszystkie niezbędne zależności w dystrybuowanym archiwum. To trochę denerwuje niektórych ludzi, ponieważ utknęli w dodatkowych kopiach bibliotek, których nie można uaktualnić, a nawet mogą kolidować z wersjami systemowymi.
źródło
Możesz statycznie połączyć program ze wszystkimi bibliotekami oprócz libc i libm. (Cholera, możesz nawet linkować w nich).
źródło
Odpowiednikiem w systemie Linux jest włączenie plików .so do katalogu w pakiecie i ustawienie skryptu powłoki tak,
$LD_LIBRARY_PATH
aby wskazywał ten katalog, a następnie uruchomienie binarnego pliku wykonywalnego.Problem z wersją 32 vs 64 polega na tym, że kompilator generuje 64-bitowy kod i łączy się z bibliotekami 64-bitowymi. Musisz zainstalować 32-bitowy zestaw narzędzi, aby zbudować 32-bitowy plik binarny. Możesz uruchomić
file
różne pliki binarne, aby to potwierdzić.źródło
Zależności pliku binarnego można uzyskać za pomocą polecenia ldd
Np .:
Ale lepiej jest udostępniać jako źródło, ponieważ biblioteki lib mogą być w różnych wersjach z różnymi symbolami lub z innej architektury.
źródło