我已经在我的 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”!您的视频卡不受支持,或者您的 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 位库时。为什么它们没有安装!?
答案1
选项1:尝试sudo ldconfig
在终端中运行。重启并尝试。
选项 2:如果这不起作用,您将必须手动将 NVidia libs 目录 (/usr/lib32) 添加到 ldconfig 配置文件 (/etc/ld.so.conf.d/libc.conf),然后重新运行 ldconfig(当然是以 root 身份运行)
编辑:在更改 libc.conf 之前,我会复制一份。
答案2
当我重新安装 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 位驱动程序!幸运的是,经过快速搜索,我在 下找到了 Nvidia 的 32 位驱动程序/usr/lib32
。我将该路径添加到 下的一个文件/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
Steam 运行完美!
答案3
Codemonkey 正确。您所要做的就是添加 32 位 nvidia 的驱动程序并删除 mesa 驱动程序。
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
此后,我的《半条命2》运行完美。:D