Linkerprobleme

SamStone

Member
Hallo,

Ich habe es gerade geschafft, ein eigenes Programm, welches unter anderem SDL und OpenGL nutzt, auf NetBSD zu kompilieren. Ich kann es jedoch leider nicht starten, da er einige libs nicht findet.

# src/blobby
Shared object "libGL.so.1" not found
# ldd src/blobby
src/blobby:
-lGL.1 => not found
-lX11.6 => not found
-lphysfs.1 => not found
-lz.0 => /usr/lib/libz.so.0
-lSDL.2 => not found
-lstdc++.5 => /usr/lib/libstdc++.so.5
-lm.0 => /usr/lib/libm387.so.0
-lm.0 => /usr/lib/libm.so.0
-lgcc_s.1 => /usr/lib/libgcc_s.so.1
-lc.12 => /usr/lib/libc.so.12
die dort nicht gefundenen libs sind jedoch installiert. Und zumindest SDL.2 kann auch bei einem anderen Programm (namentlich ScummVM) gefunden werden, warum also nicht auch bei meinem Programm?
 
Hast du beim Linken mittels -L zusätzliche Verzeichnisse eingebunden? Dann mußt du entweder $LD_LIBRARY_PATH setzen oder schon gleich beim Kompilieren den Schalter -Xlinker -rpath verwenden.

Das ist übrigens nicht NetBSD-spezifisch.
 
Mit $LD_LIBRARY_PATH klappt es. Aber irgendwie versteh ich nicht warum...
In der binary selber befinden sich doch normalerweise keine pfadangaben zu den libs, sondern nur deren Name, oder seh ich das falsch?
Warum muss ich dann z.B. bei scummvm diese Umgebungsvariable nicht setzen?
 
Weil scummvm entweder die in meinem Post als zweite Alternative genannte Möglichkeit verwendet (kann man mit einem Hex-Editor nachprüfen) oder weil es ein Wrapper-Skript verwendet, das $LD_LIBRARY_PATH automatisch setzt (kann man mit einem Text-Editor nachprüfen).
 
Zurück
Oben