lokigames:tribes2

Ceci est une ancienne révision du document !


Tribes 2

To install the game, mount your CD & run the installer with linux32 from the util-linux package :

# mount /dev/cdrom /media/cdrom
$ linux32 bash /media/cdrom/setup.sh

Apply the last released patch :

$ linux32 bash rt2-1.54c-unified-x86.run
$ ./tribes2.dynamic
Inconsistency detected by ld.so: dl-version.c: 204: _dl_check_map_versions: Assertion `needed != NULL' failed!

./tribes2.dynamic is a very old ELF binary, and unfortunately it is very broken by modern standards:

  • it contains explicit symbol-version requirements against libdl.so.2 (readelf -V ./tribes2.dynamic)
  • but it doesn't declare a dependency on libdl.so.2 (readelf -d ./tribes2.dynamic)

You can use patchelf to fix this:

patchelf --add-needed libdl.so.2 ./tribes2.dynamic
$ ./tribes2.dynamic
./tribes2.dynamic: symbol lookup error: ./tribes2.dynamic: undefined symbol: __ti9exception

The missing function can be found in a very old libstdc++ (from gcc-2.95), you can use libstdc++-3-libc6.2-2-2.10.0.so from https://www.improbability.net/loki/

Now that we have all the old libs required, you would think “OK let's run it!” and try:

LD_PRELOAD="./libstdc++-3-libc6.2-2-2.10.0.so" ./tribes2.dynamic
./tribes2.dynamic: symbol lookup error: ./tribes2.dynamic: undefined symbol: SDL_GetGamma

WTF ?

That function exist in SDL-1.2 source code (src/video/SDL_gamma.c) but isn't part of SDL-1.2 ABI.

The solution I choose is simple: I created another shim library.

Now we can start the game:

LD_PRELOAD="./libstdc++-3-libc6.2-2-2.10.0.so:./tribes2shim.so" ./tribes2.dynamic -nologin
  • lokigames/tribes2.1791832706.txt.gz
  • Dernière modification : 2026/10/12 19:18
  • de twolife