Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Uruchamianie aplikacji pod systemem Linux

Ostatnio zmodyfikowano 2013-05-21 20:23
Autor Wiadomość
polkom21
Temat założony przez niniejszego użytkownika
[SFML 2.0] Uruchamianie aplikacji pod systemem Linux
» 2013-05-20 22:50:27
Witajcie. Otóż piszę grę i postanowiłem, że będzie ona na różne platformy. Ze wszystkim sobie poradziłem tylko jest jeden taki mały problem. Nie mam pojęcia czemu nie da się uruchomić gry tak bezpośrednio z pliku. Z IDE chodzi a jak kliknę 2 razy to nie chodzi (a jak uruchamiam z IDE to odpala się bez problemu). Jak odpalę grę z terminala to wywala mi, że nie można było znaleźć jakiegoś pliku od SFML ale z tych lib o ile się nie mylę to chodziło o libkę graphics. Pewnie jakiś banał to jest ale na Ubuntu nie miałem nigdy styczności z pisaniem gier.
P-83456
DejaVu
» 2013-05-21 00:48:03
Wydaje mi się, że pliki *.so (czy jak się one pod Linuksem zwą) powinny znajdować się w tym samym katalogu, co plik wykonywalny (jeżeli linkujesz SFML-a dynamicznie).
P-83467
polkom21
Temat założony przez niniejszego użytkownika
» 2013-05-21 09:28:45
No sprawdzę później i dam znać czy zadziałało czy nie. Jeszcze można by było  zalinkowac statyczne wszystkie lib tylko czy to zadziała na Ubuntu.
P-83480
polkom21
Temat założony przez niniejszego użytkownika
» 2013-05-21 10:12:08
No sprawdzilem i lipa. Wklepalem w ustawieniach w #define sfml staic i tez nic. Jakies pomysly?

EDIT:
No coś tam wykombinowałem. Mam coś takiego, że libki od SFML muszą być w folderze /usr/lib inaczej nie odpala się aplikacja. Tylko teraz jak wyślę komuś plik na linuxa to go nie odpali bo nie ma plików lib u siebie.
P-83481
mostrom
» 2013-05-21 16:49:07
Zauważ, że każda aplikacja pod np Ubuntu, Debiana jest spakowana i przesyłana w formacie .deb. Wydaje mi się, że program dpkg rozpakowuje wszystkie pliki niezbędne do odpalenia programu i wsadza je na swoje miejsce. Poszukaj w necie jak stworzyć takową paczkę.
P-83522
polkom21
Temat założony przez niniejszego użytkownika
» 2013-05-21 20:21:39
No dobra można zrobić sobie paczkę deb i co z tego jak ja bym chciał wypuścić jakąś testową wersję to ciągle trzeba by było usuwać starą wersję i instalować nową a coś takiego jak na windzie jest, że ściągam, wypakowuje i odpalam na pewno jest na linuxa.
P-83541
m4tx
» 2013-05-21 20:23:53
Dobra, widzę że trzeba zabrać głos w topicu... :)
Powiem krótko: program szuka bibliotek wszędzie tam, gdzie prowadzą ścieżki w zmiennej
$LD_LIBRARY_PATH
. Dlatego też, jeśli chcesz dołączać do swojego programu własne biblioteki, niestety - trzeba się trochę namordować.

Linuksowy Steam na ten przykład robi to tak:
export LD_LIBRARY_PATH="$STEAM_RUNTIME/i386/lib/i386-linux-gnu:$STEAM_RUNTIME/i386/lib:$STEAM_RUNTIME/i386/usr/lib/i386-linux-gnu:$STEAM_RUNTIME/i386/usr/lib:$STEAM_RUNTIME/amd64/lib/x86_64-linux-gnu:$STEAM_RUNTIME/amd64/lib:$STEAM_RUNTIME/amd64/usr/lib/x86_64-linux-gnu:$STEAM_RUNTIME/amd64/usr/lib:$LD_LIBRARY_PATH"
(fragment skryptu steam.sh).

Dzięki temu właśnie możliwe jest uruchomienie Steama i załączenie dołączych do programu bibliotek. Jeśli więc chcesz zrobić coś podobnego, to chyba taki skrypt to jedno z prostszych rozwiązań. Innym, dość prostym rozwiązaniem jest skopiowanie niezbędnych bibliotek tam, gdzie będą one szukane - czyli m.in. w /usr/lib. Problem w tym, że trzeba mieć uprawnienia roota do wykonania takiej operacji.

Podnoszą się również głosy, że niby
$LD_LIBRARY_PATH
 jest złe i lepiej używać parametru dla GCC -rpath podczas kompilacji. Jak więc widać wyraźnie, problem jest bardziej złożony, niż mogłoby się wydawać.
Poszukaj więc w Google hasła typu "exporting LD_LIBRARY_PATH", czy "deploying own libraries with application linux". Kilka linków wartych przeczytania, które znalazłem wcześniej:
http://stackoverflow.com/questions/695530/why-do-i-have-to-define-ld-library-path-with-an-export-every-time-i-run-my-appli
http://stackoverflow.com/questions/2484265/how-do-i-get-rid-of-ld-library-path-at-run-time

EDIT:
No dobra można zrobić sobie paczkę deb i co z tego jak ja bym chciał wypuścić jakąś testową wersję to ciągle trzeba by było usuwać starą wersję i instalować nową
Słyszałeś o czymś takim jak repozytoria? :) Zresztą, wcale nie trzeba nic usuwać.
P-83542
« 1 »
  Strona 1 z 1