升级了 Nvidia 官方驱动后, Mesa代码编译的库使用有问题
最近升级了显卡驱动,程序是NVIDIA-Linux-x86-319.17.run
然后,使用 Mesa源代码(MesaLib-9.1.2)编译出的opengl用起来就有问题了。
如果执行 一个 demo 程序,会报错:
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/swrast_dri.so
libGL error: dlopen /usr/lib/swrast_dri.so failed (/usr/lib/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL: OpenDriver: trying /usr/lib/tls/swrast_dri.so
libGL error: dlopen /usr/lib/tls/swrast_dri.so failed (/usr/lib/tls/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
freeglut (./a.out): ERROR: Internal error <FBConfig with necessary capabilities not found> in function fgOpenWindow
ldd a.out
linux-gate.so.1 => (0xb779b000)
libGLU.so.1 => /usr/local/private/lib/libGLU.so.1 (0xb7713000)
libGL.so.1 => /usr/local/private/lib/libGL.so.1 (0xb76b2000)
libglut.so.3 => /usr/local/private/lib/libglut.so.3 (0xb7676000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74b1000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7485000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb739b000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb737e000)
libglapi.so.0 => /usr/local/private/lib/libglapi.so.0 (0xb735e000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb734c000)
libXdamage.so.1 => /usr/lib/i386-linux-gnu/libXdamage.so.1 (0xb7348000)
libXfixes.so.3 => /usr/lib/i386-linux-gnu/libXfixes.so.3 (0xb7342000)
libX11-xcb.so.1 => /usr/lib/i386-linux-gnu/libX11-xcb.so.1 (0xb733f000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb720a000)
libxcb-glx.so.0 => /usr/lib/i386-linux-gnu/libxcb-glx.so.0 (0xb71f2000)
libxcb-dri2.so.0 => /usr/lib/i386-linux-gnu/libxcb-dri2.so.0 (0xb71ed000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb71cc000)
libdrm.so.2 => /usr/lib/i386-linux-gnu/libdrm.so.2 (0xb71bf000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb71a3000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb719e000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb7195000)
libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xb7185000)
libXrandr.so.2 => /usr/lib/i386-linux-gnu/libXrandr.so.2 (0xb717c000)
/lib/ld-linux.so.2 (0xb779c000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb7177000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb7170000)
libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb7166000
如果不使用 mesa源代码编出来的库,则没有问题:
ldd a.out
linux-gate.so.1 => (0xb777c000)
libGLU.so.1 => /usr/lib/i386-linux-gnu/libGLU.so.1 (0xb76e9000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb75e7000)
libglut.so.3 => /usr/local/private/lib/libglut.so.3 (0xb75ab000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7402000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb73d6000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb72ec000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb72cf000)
libnvidia-tls.so.319.17 => /usr/lib/tls/libnvidia-tls.so.319.17 (0xb72ca000)
libnvidia-glcore.so.319.17 => /usr/lib/libnvidia-glcore.so.319.17 (0xb5303000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb51cf000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb51bd000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb51b8000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb51ae000)
libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xb519e000)
libXrandr.so.2 => /usr/lib/i386-linux-gnu/libXrandr.so.2 (0xb5195000)
/lib/ld-linux.so.2 (0xb777d000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb5174000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb5159000)
libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb514e000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb514a000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb5143000)
是不是因为在安装 Nvidia官方驱动的时候,把 Nvidia 的开源驱动 nouveau blacklist了,结果导致 Mesa不支持 在 Nvidia卡上 DRI的功能了?