Why are my 32bit OpenGL libraries pointing to mesa instead of nvidia, and how do I fix it?

17,378

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!

Share:
17,378

Related videos on Youtube

Hubro
Author by

Hubro

Updated on September 18, 2022

Comments

  • Hubro
    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!?

  • Hubro
    Hubro almost 11 years
    What directory is that? Please check my question edit. I ran sudo ldconfig but nothing changed :(
  • BiggJJ
    BiggJJ almost 11 years
    Sorry, 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
    Hubro almost 11 years
  • Hubro
    Hubro almost 11 years
    I 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
    Hubro over 10 years
    May I ask why my answer was down-voted?