To zależy od tego, co pochodzi dystrybucja od. Zasadniczo, nie ma potrzeby rekompilacji programu na systemie podobnym do Ubuntu w Fedorze, o ile kod pozostaje niezmieniony. Ponieważ Ubuntu i Fedora musiałyby używać tych samych bibliotek (choć prawdopodobnie w różnych lokalizacjach) i wszystko, co związane z OpenGL byłoby problemem dla kierowcy; dlatego nie jest wymagana ponowna kompilacja oprogramowania. Byłbym bardzo zaskoczony, gdybyś musiał przekompilować swoje oprogramowanie, ponieważ wszystkie dystrybucje używają prawie tego samego zestawu bibliotek/dostają bash/używają jądra Linux, ale mają różnych menedżerów pakietów. Ostatnią częścią jest złożenie:
Powyższe dystrybucje mają różnych menedżerów pakietów, co wymaga odpowiedniego przepakowania oprogramowania. Możesz uwolnić skompilowane pliki binarne pod plikiem tar.gz i po prostu mieć opiekunów dystrybucji pakiet oprogramowania; Jeśli jednak chcesz kontrolować dystrybucję swojego oprogramowania, powinieneś lepiej zrobić to samemu. Z powodu tego problemu związanego z wieloma menedżerami pakietów, ludzie wciąż uciekają się do rekompilacji kodu źródłowego poprzez plik make, który można wygenerować za pomocą cmake. Dzieje się tak tylko wtedy, gdy pewne zależności są z jakiegoś powodu "przemianowane", w którym to przypadku z powodu prostej zmiany nazwy program magicznie nie znajduje zależności. Ponieważ nie ma również konwencji nazewnictwa, nawet życie staje się trudniejsze. Najważniejszą zaletą jest tutaj Trust i Trust, aby programiści stosowali konwencje nazewnictwa, aby każdy mógł odwoływać się do tego samego pakietu o tej samej nazwie.
Najlepsze dystrybucje do wsparcia są najbardziej popularne: Ubuntu i openSUSE będą świetnymi punktami wyjściowymi. Linux Mennica, Fedora i Red Hat oraz Debian korzystają z menedżerów pakietów, podobnie jak wyżej wymienione.
- W międzyczasie powinieneś wiedzieć, że nie możesz statycznie połączyć kodu GPL w swoim oprogramowaniu, nie robiąc również oprogramowania GPL. Sposób obejścia tego problemu ma na celu rozwiązanie zależności przez: A. Uwzględnienie odpowiednich zależności w tym samym folderze co plik wykonywalny (podobnie jak * .dlls w systemie Windows) lub w zależności od systemu, na którym uruchamiany jest twój program, aby zajrzeć do środka te same katalogi, na które program się zajrzał podczas kompilowania i łączenia. Ta ostatnia jest bardziej ryzykowna, ponieważ zakłada, że użytkownik będzie miał biblioteki i nie będzie modyfikowany. Ten pierwszy sprawi, że twoje ogólne oprogramowanie będzie zużywać mniej pamięci, ale uwzględnienie zależności będzie oznaczało tylko zwiększenie rozmiaru pakietu, ale zapewni spójność we wszystkich systemach.
Do instalacji potrzebny jest plik wykonywalny bash, który przenosi zawartość katalogu do właściwych lokalizacji. Zasadniczo główna aplikacja przechodzi do/usr/bin, a wszelkie dane związane z aplikacją trafiają do folderu domowego. To znowu zależy od dystrybucji; Szukam .lokalny katalog lub możesz utworzyć katalog dedykowany dla aplikacji, która jest ukryta. Ukryte foldery są poprzedzone kropką. Po co umieszczać te rzeczy w katalogu domowym i co? Powód: ponieważ folder macierzysty domyślnie daje wszystkim uprawnienia do odczytu i zapisu dla wszystkich. Co: wszystko, co musi być uruchamiane z aplikacją, bez konieczności autoryzowania przez użytkownika. Zależności powinny więc znajdować się w katalogu domowym, najlepiej pod własnym katalogiem. Następują różne konwencje; niektórzy mogą nie zgadzać się ze mną w tej sprawie.
Możesz również użyć funkcji API Steam, która wykonuje większość tej pracy. W wersji Steam Twoja aplikacja może znajdować się w katalogu własnym Steam i tym samym działa jako aplikacja Steam z pełną funkcjonalnością.
http://www.steampowered.com/steamworks/
Aby dowiedzieć się więcej o tym, jak dostać swoją aplikację na parze. Muszę powiedzieć, że byłem naprawdę pod wrażeniem, a nawet zawierają próbki kodu. Najlepsze jest to, że to API jest również w Linuksie. Nie wiem zbyt wiele poza tym, że Steam będzie obsługiwał wykonanie twojej aplikacji przez własną warstwę. W takim przypadku nie ma potrzeby niezależnego rozpowszechniania aplikacji w poprzednich krokach.
Pamiętaj, że możesz również rozpowszechniać swoje oprogramowanie za pośrednictwem Centrum Oprogramowania Ubuntu, jeśli jesteś zainteresowany.
http://developer.ubuntu.com/apps/
Chociaż Ubuntu ma bardziej skupić się na aplikacje uruchomione niezależnie od platformy.
Wiedz, że Linux nie ma jednej konwencji, ale jego konwencja jest po prostu wyprowadzona z pragmatyzmu, a nie z teorii. Podsumowując, sposób, w jaki oprogramowanie ma działać w systemie Linux, należy do Ciebie.
Dziękuję, to zdecydowanie najlepsza odpowiedź tutaj - jeszcze jedno pytanie: jeśli będę przechowywać zależności w katalogu 'home', to czy będą one dostępne dla wszystkich użytkowników? Czy aktywa powinny być również przechowywane w 'home'? – PiotrK