Why are my 32bit OpenGL libraries pointing to mesa instead of nvidia, and how do I fix it?
Solution 1
Option 1: Try running sudo ldconfig
in a terminal. Reboot and try.
Option 2: If this doesn't sort it, you will have to manually add the directory of the NVidia libs (/usr/lib32) to the ldconfig configuration file (/etc/ld.so.conf.d/libc.conf) and then re-run ldconfig (as root of course)
EDIT: I would make a copy of libc.conf before changing it.
Solution 2
When I reinstalled the Nvidia drivers, all mesa OpenGL drivers were removed from the library cache. My library cache looked like this:
$ ldconfig -p | grep libGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/libGL.so
No 32bit drivers there! Luckily, after a quick search, I found Nvidia's 32bit drivers under /usr/lib32
. I added that path to a file under /etc/ld.so.conf.d/
(any file will do, you can even make a new file) and ran sudo ldconfig
. My cache now looks like this:
$ ldconfig -p | grep libGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
libGL.so.1 (libc6) => /usr/lib32/libGL.so.1
libGL.so (libc6,x86-64) => /usr/lib/libGL.so
libGL.so (libc6) => /usr/lib32/libGL.so
And Steam works perfectly!
Related videos on Youtube
Hubro
Updated on September 18, 2022Comments
-
Hubro over 1 year
I have installed Nvidia's drivers on my Ubuntu 13 system, but according to this command (
ldconfig -p | grep GL
):$ ldconfig -p | grep GL libQtOpenGL.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4 libGLU.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLU.so.1 libGLEWmx.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.8 libGLEW.so.1.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.8 libGLESv2.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2 libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1 libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/mesa/libGL.so.1 libGL.so (libc6,x86-64) => /usr/lib/libGL.so libEGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1
The 32bit version of OpenGL is pointing to mesa's libraries instead of nvidia. This causes my Steam games to refuse to launch with the error:
Could not find required OpenGL entry point 'glGetError'! Either your video card is unsupported, or your OpenGL driver needs to be updated.
Why is this the case? When the nvidia installer asked me if I wanted to install "32bit compatability libraries" (or something like that) I chose yes. How do I fix this?
Edit:
I just reinstalled the same Nvidia driver, and that apparently removed the 32bit OpenGL driver completely:
$ ldconfig -p | grep libGL.so libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1 libGL.so (libc6,x86-64) => /usr/lib/libGL.so
Now Steam won't start:
You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1
Again, I chose YES when the installer asked me if I wanted to install 32bit libraries. Why are they not installed!?
-
Andrea Corbellini over 8 yearspossible duplicate of Could not find required OpenGL entry point 'glGetError'
-
-
Hubro almost 11 yearsWhat directory is that? Please check my question edit. I ran
sudo ldconfig
but nothing changed :( -
BiggJJ almost 11 yearsSorry, I cannot see where you ran only
sudo ldconfig
. It's late so my eyes might be deceiving me. Can you list the files in /etc/ld.so.conf.d? -
Hubro almost 11 years
-
Hubro almost 11 yearsI added "/usr/lib32" to "libc.conf" and ran ldconfig. It has now linked the 32bit opengl driver and everything appears to be working perfectly. Can my config change cause issues in the long run?
-
Hubro over 10 yearsMay I ask why my answer was down-voted?