为什么我的32位OpenGL库指向台面而不是nvidia,我该如何解决?

我在我的Ubuntu 13系统上安装了Nvidia的驱动程序,但是根据这个命令( 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 

32位版本的OpenGL指向mesa的库而不是nvidia。 这导致我的Steam游戏拒绝启动时出现错误:

找不到所需的OpenGL入口点’glGetError’! 您的video卡不受支持,或者您的OpenGL驱动程序需要更新。

为什么会这样? 当nvidia安装程序问我是否要安装“32位兼容性库”(或类似的东西)时,我选择了是。 我该如何解决?


编辑:

我刚刚重新安装了相同的Nvidia驱动程序,这显然完全删除了32位OpenGL驱动程序:

 $ 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 

现在Steam无法启动:

您缺少以下32位库,并且Steam可能无法运行:libGL.so.1

再次,当安装程序询问我是否要安装32位库时,我选择了YES 。 他们为什么没有安装!?

选项1:尝试在终端中运行sudo ldconfig 。 重新启动并尝试。

选项2:如果没有对它进行排序,则必须手动将NVidia库(/ usr / lib32)的目录添加到ldconfig配置文件(/etc/ld.so.conf.d/libc.conf)然后重新运行ldconfig(当然是root)

编辑:我会在更改之前复制libc.conf。

当我重新安装Nvidia驱动程序时,所有mesa OpenGL驱动程序都从库缓存中删除。 我的库缓存看起来像这样:

 $ 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 

那里没有32位司机! 幸运的是,经过快速搜索,我在/usr/lib32下找到了Nvidia的32位驱动程序。 我在/etc/ld.so.conf.d/下添加了该文件的路径(任何文件都可以,你甚至可以创建一个新文件)并运行sudo ldconfig 。 我的缓存现在看起来像这样:

 $ 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 

蒸汽工作完美!

Codemonkey Correct.All你要做的是添加32位nvidia的驱动程序并删除台面驱动程序。

 cd /etc/ld.so.conf.d/ ls 

找到一个带有“i386”的文件名

我的是“i386-linux-gnu_GL.conf”

那我写,

 sudo gedit i386-linux-gnu_GL.conf 

然后使用gedit添加32位驱动程序的路径。
我的是“/ usr / lib32 /”。

如果找不到32位驱动程序位置,请搜索它。

保存。 打开终端并输入:

 sudo ldconfig 

我的Half-Life2在此之后完美运作。 :d