Hoi, I recently bought the Linux version of X3: Reunion from GOG, but I can't find a way to start it.
My system: Fedora 32, 64-bit version
I went via terminal into the X3 Reunion folder and started it by:
./start.sh
Which gave me:
./X3R_config: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
I looked in the folder /usr/lib/
and libgtk-x11-2.0.so.0
was there.
Then I thought, oh, I forgot to install the mentioned programs listed on the GOG page.
Which were:
Requires the following packages to be installed: libc6:i386 libasound2:i386 libasound2-data:i386 libasound2-plugins:i386 libgtk2.0-0:i386 libxml2:i386 and dependencies. This game comes with a 32-bit binary only
Through internet research I think I found the corresponding Fedora programs and installed them:
- glibc-devel.i686, which installed libxcrypt-devel.i686 as dependency
- alsa-lib.i686 (was already installed)
- alsa-lib-devel.i686
- alsa-plugins-pulseaudio.i686 (because pulseaudio was the only one installed in the 64-bit version I thought that would be the one for this game)
- gtk2.i686, which installed atk.i686, gdk-pixbuf2-modules.i686 and jasper-libs.i686 as dependencies
- libxml2.i686
- libxml2-devel.i686, which installed cmake-filesystem.i686, xz-devel.i686, xz-devel.x86_64 and zlib-devel.i686 as dependencies
Then I tried to start the game again, this time I got:
./X3R_config: lib/libz.so.1: version `ZLIB_1.2.9' not found (required by /lib/libpng16.so.16)
Through some research I came to this site here: https://stackoverflow.com/questions/48306849/lib-x86-64-linux-gnu-libz-so-1-version-zlib-1-2-9-not-found
and tried the second solution:
cd /your_software/../lib/ (the directory containing libz.so.1) mv libz.so.1 libz.so.1.old ln -s /lib/x86_64-linux-gnu/libz.so.1
Because in Fedora is no lib/x86_64-linux-gnu/
I found out that the corresponding folder should be lib64
So I did:
cd /usr/lib/ sudo mv libz.so.1 libz.so.1.old sudo ln -s /lib64/libz.so.1
Sadly this didn't help.
Recently I had a similar case with the Linux version of Mount & Blade: Warband from GOG, which gave me after start something like this:
error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
But the solution for Mount & Blade: Warband was:
sudo ln -s /usr/lib64/libcurl.so.4 /usr/lib64/libcurl-gnutls.so.4
And Mount & Blade: Warband started after that normally.
Maybe that helps or will give an additional idea how to get X3: Reunion to start...
If I forgot anything I will add it, I only use Linux for browsing and some office / gaming, so when it comes down to it, I am only a beginner ;)
Thank you in advance.
Small update
So, I put the libz.so.1, which I compiled from source like @aphid showed it, into the ~/GOG Games/X3 Reunion/game/lib/
folder, but renamed the previous libz.so.1
to libz.so.1.old
.
then I got:
./start.sh
Running X3: Reunion
Language detected: English
./X3R_config: symbol lookup error: /lib/libxcb-shm.so.0: undefined symbol: xcb_send_request_with_fds
which lead me to:
where someone had the same issue, but for X3 Terran War.
Well yeah, it's an other game, but the same series, so I thought the following might work:
Solution there was to delete the lib folder in the root folder of the game (that one next to docs, game, start.sh.,...) and keep in the lib folder located in games only with:
libavcodec.so.53
libavformat.so.53
libavutil.so.51
libbz2.so.1.0
libcrypto.so.1.0.0
libGLEW.so.1.13
libswscale.so.2
Of course I saved the ~/GOG Games/X3 Reunion/lib
and ~/GOG Games/X3 Reunion/game/lib/
before doing this
which got me:
./start.sh
Running X3: Reunion
Language detected: English
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request: GLXBadContext
Major opcode of failed request: 153 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request: 107
Current serial number in output stream: 106
which lead me with a search for failed to load driver: swrast
to this:
So maybe 32-bit-nvidia-libs might help, or would they conflict with the current 64-bit-libs? X3: Reunion is a 32-bit only game afterall.
Currently installed ones which are 64-bit packages:
akmod-nvidia-340xx
kmod-nvidia-340xx-5.11.11-100.fc32.x86_64
kmod-nvidia-340xx-5.11.12-100.fc32.x86_64
kmod-nvidia-340xx-5.11.14-100.fc32.x86_64
nvidia-texture-tools
xorg-x11-drv-nvidia-340xx
xorg-x11-drv-nvidia-340xx-kmodsrc
xorg-x11-drv-nvidia-340xx-libs
xorg-x11-drv-nvidia-libs
I would then just install the .i686 ones...
Or would this option be a dead end?
Update 2
Ok, installed now the 32-bit nvidia libraries and it starts now. Got help from here.
Also found out that it will start when you delete/rename the ~/GOG Games/X3 Reunion/lib
folder. And you can keep all files in the ~/GOG Games/X3 Reunion/game/lib/
folder but we had to switch out the libz.so.1 with the previous compiled one.
I will write a detailed answer in the answer section to this now.
LD_LIBRARY_PATH
works and what it does. (Note that your use case actually is one of the recommended ones: getting an older misnamed version of a library linked into your program, when you can't control the code in the program because it's closed source).