Steam: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64
After Nvidia driver installation when I try to run Steam I am getting this error:
steam: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64
I found this question and one of the answers that suggest installing:
sudo apt-get install libgl1-mesa-glx:i386
I have already installed libgl1-mesa-glx:i386
. Than I found this. It suggests making a symlink to 32bit libGL. How can do that? Do you have any other suggestions?
Solution 1:
This problem on 64-bits systems is caused by /usr/lib
being earlier in the LD_LIBRARY_PATH
than /usr/lib32
. Steam tries the 64-bit libraries and complains, without looking any further.
It can be fixed however by in ~/Steam/steam.sh
but that file seems to be restored to the original version every time steam is ran.
I fixed it by creating a script that does this:
#!/bin/bash
export LD_LIBRARY_PATH=/usr/lib32:$LD_LIBRARY_PATH
steam $*
This prepends /usr/lib32
to the library path, then starts steam (with the script's original arguments).
Now /usr/lib32
is found in the path before /usr/lib
, and steam will successfully use the 32-bit libraries.
You may also want to add the line
export LD_LIBRARY_PATH=/usr/lib32:$LD_LIBRARY_PATH
to /usr/bin/steam
, it will have the same effect, as long as you add it before the very last line. You'll need to sudo to edit /usr/lib/steam
.
- This has the added bonus that it's a better fix, since everything that starts steam (the application menu entry, file type associations, URI associations) will work correctly.
- The disadvantage is that
/usr/bin/steam
is likely to be overwritten when steam is updated.
I use the latter method, while keeping the script as a backup. That way, if /usr/bin/steam
gets overwritten, I can simply copy paste the line again from the script to fix it.
Solution 2:
Fixed this in raring ringtail (xubuntu 13.04) with nVidia 319.17 drivers by adding /usr/lib32
to a new file:
$ sudo nano /etc/ld.so.conf.d/lib32.conf
then running:
$ sudo ldconfig
Since the file /etc/ld.so.conf
contains include /etc/ld.so.conf.d/*.conf
, any file in that directory with the extension .conf
gets parsed.
Solution 3:
From: https://github.com/ValveSoftware/steam-for-linux/issues/321
I got the same issue and solved it by doing this:
$ cd ~/.steam/bin
$ ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 .
This worked for me as well.
Solution 4:
I ran into the same problem, but with skype. All the solutions above (creating symlinks, configuring LD_LIBRARY_PATH) didn't work for me.
I finally found help in the post already mentioned above - but with a different solution.
It seems that the nvidia updater (when asking for permission to install OpenGL 32-bit compatibility libraries) messed up and removed /usr/lib/i386-linux-gnu/mesa/libGL.so.1
and /usr/lib/i386-linux-gnu/mesa/libGL.so
.
Reinstalling the libgl1 library did help:
sudo apt-get install --reinstall libgl1-mesa-glx:i386
Solution 5:
Fixed this for Mint 14 with the newest 64 bit Nvidia drivers 310.32 with the 32bit driver support installed in
/emul/ia32-linux/usr/lib
by adding
export LD_LIBRARY_PATH=/emul/ia32-linux/usr/lib:$LD_LIBRARY_PATH
After the first "export"
in the beginning of the /usr/bin/steam
file.