Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

13.06.2010, 12:52

Ubuntu und .SO Dateien

Hi,

erstmal hoffe ich, dass das Unterforum stimmt.

Vor einigen Tage habe ich angefangen auf meinem frisch installierten Ubuntu Code::Blocks und die SFML zu installieren.
Kompilieren klappt auch soweit. Nur wenn ich die .SO Dateien der SFML einbinde habe ich beim Ausführen das Problem, dass diese dann nicht mehr gefunden werden.
Im Gegensatz zu WIndwos und seinen .DLL Dateien reicht es unter Ubuntu/Debian nicht, die .SO Dateien in das gleiche Verzeichnis, wie die Anwendung, zu kopieren.
Ich habe mir jetzt soweit geholfen, dass ich die entsprechenden .SO Dateien in das Verzeichnis /user/lib kopiert habe. Dort werden sie immer gefunden.
Da ich meine Spiele/Anwendungen irgend wann mal veröffentlichen will, finde ich diese Lösung alles andere als optimal.
Ich würde mich freuen, wnen mir jemand einen Tip geben könnte, dies besser zu lösen, zumal mir auch keine vernüftigen Suchbegriffe einfallen, die ich in Google usw. verwenden könnte.

Grüße Chriss

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

2

13.06.2010, 13:58

Also erst einmal hoffe ich dass du nicht /user/lib meinst sondern /usr/lib. Mal am Rande, /usr/ ist kein Kürzel für "user", sondern steht für "user system resources". Ferner gehören Ressourcen, die nicht durch den Paketmanager installiert wurden, sondern manuell, in die enstprechenden local Unterverzeichnisse, also /usr/local/lib statt /usr/lib und /usr/local/include statt /usr/include.

Eigentlich sollte das Makefile, über das du die .SO Dateien erstellt hast, eine "install"-Direktive enthalten. In dem Fall sollte es dir und dem Endbenutzer einfach reichen, ein "sudo make install" im Verzeichnis des Makefiles auszuführen, um die .SO Dateien korrekt zu installieren.

Führ mal ein "sudo ldconfig" aus. Sollte man tun, nachdem man neue Libs installiert hat.

Falls es immernoch nicht geht: Gib mal die genaue Fehlermeldung, die besagt, dass eine .SO nicht gefunden wird. Und gib den genauen Dateipfad zu der Datei an, wo du sie nun liegen hast - Sollte etwas mit /usr/local/ am Anfang sein. Gib auch mal den genauen Dateinamen.
<< an dieser Stelle ist eine Signatur verstorben >>

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »the[V]oid« (13.06.2010, 14:08)


3

13.06.2010, 15:34

Danke the[V]oid.

Du hattest recht, ich meinte /usr/lib. Was es bedeutet wusste ich bisher nicht (ich dachte da wirklich an User).
Ich hatte die SFML ans ZIP heruntergeladen und einfach entpackt. Das mit dem Makefile hatte ich vorher mit der SFML2 versucht, was leider fehlgeschlagen ist.
Ich werde das mal so versuchen, wie du es beschrieben hast, es würde allerdings auch bedeuten, dass sich alle Spieler erstmal die SFML mit Make kompilieren und installieren müssen.
Das finde ich irgendwie nicht so zufriedenstellend.

Gibt es denn eine Möglichkeit die .SO dateien, ähnlich wie .A Dateien statisch einzufügen?
Unter Windows geht es nicht, aber da reicht es ja die Dateien in den gleichen Ordner zu legen.

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

4

13.06.2010, 17:12

Unter Linux würde man die .SO Dateien halt vom Installer einfach nach /usr/local/lib kopieren lassen.
Das ist auch nichts anderes als das, was "make install" tut.
Ein einfaches "make" ist für das Kompilieren, Linken, etc. verantwortlich.
Das "make install" hat damit nix mehr zu tun. Es kopiert nur.

Wenn irgendwas nicht klappt, so wie ich es beschrieben habe, dann melde dich nochmal und poste die exakte Fehlermeldung.
<< an dieser Stelle ist eine Signatur verstorben >>

5

15.06.2010, 13:04

Hey

Hab das an linux auch nicht so gemocht, da ich mein Spiel spielbar ohne zuerst es installiern zu müssen hergeben wollte.
Folgendes shellfile hilft dir ja vllt.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh

# script used to detect 32 or 64 bit linux and to set LD_LIBRARY_PATH

if [ `uname -m | grep -o '64'` -eq '64' ] ;
then
    echo "I'm 64-bit"
        lib="./bin/linux64/"
        bin="./bin/linux64"
else
    echo "I'm 32-bit"
    echo "Not supported yet"
        exit 0
#       lib="./bin/linux32/"
#       bin="./bin/linux32"
fi

LD_LIBRARY_PATH=$lib
export LD_LIBRARY_PATH
exec "$bin/linux64/blubVolley"

exit 0


Der Code prüft zuerst ob es ein 64bit system ist und setzt anschließend den Parameter "LD_LIBRARY_PATH". Anschließend wird das Spiel ausgeführt. "LD_LIBRARY_PATH" sollte man eigentlich meiden und dient nur als Entwicklererweiterung. Dafür braucht man um das Spiel zu spielen keine Adminrechte um es erstmal zu installieren.

Gruß
Markus

6

20.06.2010, 21:51

Danke, ich denke das hilft :)

Ein Arbeitskolege hat mir inzwischen geraten .deb Pakete zu machen, welche die Installtion durchführen.
Da ich mehr ein Freund von "Herunterladen und ausführen" bin, werde ich das mit deinem Shellscript ausprobieren.

Werbeanzeige