(1) Vgl. serverfault: Es gibt im ELF_Header ein Feld DT_RPATH, das einen (potentiell relativen Pfad) zur Bibliothekssuche spezifiziert. Dieser Pfad hat bei der Suche nach der Bibliothek die höchste Priorität. Civilization V verwendet beispielsweise (RPATH unten, NEEDED habe ich belassen um die Verweise ins Verzeichnis zu zeigen)
Code: Alles auswählen
bernhard@bernhard-H97-D3H:~/.steam/steam/SteamApps/common/Sid Meier's Civilization V$ objdump -p Civ5XP
Civ5XP: file format elf32-i386
Program Header:
[...]
Dynamic Section:
NEEDED libcrypto.so.1.0.0
NEEDED libMiles.so
NEEDED libtbb.so.2
NEEDED libssl.so.1.0.0
NEEDED libX11.so.6
NEEDED libpthread.so.0
NEEDED librt.so.1
NEEDED libc++.so.1
NEEDED libcxxrt.so
NEEDED libc.so.6
NEEDED ld-linux.so.2
NEEDED libsteam_api.so
NEEDED libGL.so.1
NEEDED libopenal.so.1
NEEDED libdl.so.2
NEEDED libm.so.6
NEEDED libgcc_s.so.1
NEEDED libuuid.so.1
NEEDED libiconv.so.2
RPATH .
INIT 0x08476aec
FINI 0x0913bb70
INIT_ARRAY 0x0a2fd8fc
Code: Alles auswählen
bernhard@bernhard-H97-D3H:~/.steam/steam/SteamApps/common/Sid Meier's Civilization V$ ls
binkawin.asi libssl.so.1.0.0
Civ5XP libsteam_api.so
com.aspyr.civ5xp.version.json libsteam.so
libcrypto.so.1.0.0 libtbb_debug.so
libc++.so libtbb_debug.so.2
libc++.so.1 libtbbmalloc_debug.so
libc++.so.1.0 libtbbmalloc_debug.so.2
libCvGameCoreDLL_Expansion1.so libtbbmalloc.so
libCvGameCoreDLL_Expansion2.so libtbbmalloc.so.2
libCvGameCoreDLL.so libtbb.so
libcxxrt.so libtbb.so.2
libiconv.so libtier0_s.so
libiconv.so.2 libuuid.so.1
libiconv.so.2.5.1 libuuid.so.1.3.0
libMilesMidi.so libvstdlib_s.so
libMiles.so mssdolby.flt
libMilesX64.so mssdsp.flt
libopenal.so mssmixer.mix
libopenal.so.1 mssmp3.asi
libopenal.so.1.13.0 mssogg.asi
libSDL2-2.0.so.0 msssrs.flt
libSDL2-2.0.so.0.1.0 mssvoice.asi
libSDL2_image-2.0.so.0 steamassets
libSDL2_image-2.0.so.0.0.0 steamclient.so
libSDL2_image.so
Code: Alles auswählen
#/bin/sh
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:."
./Spiel