I'm trying to run a game (PRIME, an old Rougelike found here) and after downloading the 64 bit linux version, and going to run it, I get this error response:
./prime: error while loading shared libraries: libsigsegv.so.2: cannot open shared object file: No such file or directory
Now, I've checked that I've got that file in my library, and it's up to date. The last time I asked this question I was able to solve it simply with a sudo-apt-update, sudo-apt-upgrade. That isn't working this time.
(The italicized note above is technically a mistake. I did have that file, but not the i386 version. Take a look at the accepted answer and my comments to see how we discovered that!)
My real item is this, though: Shared library problems are a pretty common error, it seems, and although the library in question changes, the other common issue is that the library exists, but for some reason the executable (or the user?) can't find it?
This is also not the first time I've had this issue on this system.
Is there a general solution or approach to shared library problems?
I came across this using ldconfig
but I haven't been able to get it to work.
output of ldd ./prime
in the directory with that executable
linux-gate.so.1 (0xf7f03000)
libsigsegv.so.2 => not found
libnoteye.so => ./libnoteye.so (0xf7e4f000)
libncurses.so.5 => /lib/i386-linux-gnu/libncurses.so.5 (0xf7e26000)
libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xf7e00000)
libpanel.so.5 => /usr/lib/i386-linux-gnu/libpanel.so.5 (0xf7df9000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf7c1b000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7b16000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7af7000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7908000)
libSDL-1.2.so.0 => not found
libSDL_image-1.2.so.0 => not found
liblua5.1.so.0 => not found
libutil.so.1 => /lib/i386-linux-gnu/libutil.so.1 (0xf7901000)
libSDL_mixer-1.2.so.0 => not found
libSDL_net-1.2.so.0 => not found
libGL.so.1 => /usr/lib/i386-linux-gnu/libGL.so.1 (0xf7894000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7876000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7870000)
/lib/ld-linux.so.2 (0xf7f04000)
libGLdispatch.so.0 => /usr/lib/i386-linux-gnu/libGLdispatch.so.0 (0xf77f3000)
libGLX.so.0 => /usr/lib/i386-linux-gnu/libGLX.so.0 (0xf77b7000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf7666000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf7637000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf7631000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf7629000)
libbsd.so.0 => /usr/lib/i386-linux-gnu/libbsd.so.0 (0xf760a000)
From
ldd
, it is clear thatprime
is a 32bit/i386
build. It requires dependencies from same architecture. We may confirm too using:We search for each missing library file using
apt-file
(if installed, be aware it downloads large indexes) or https://packages.ubuntu.com for corresponding package then install it.For a so called 64-bit application prime needs a bunch i386 libaries.
sudo dpkg --add-architecture i386
afterwardssudo apt update
Make sure the not founding libaries are installed for 64-bit and 32-bit.
You can found the relevant packages with apt-file search missing file.
maybe you have to install it
sudo apt install apt-file
andsudo apt-file update
How to use apt-file