Chapter 5. Listing of Installed Components

The NVIDIA Accelerated Linux Graphics Driver consists of the following components (filenames in parentheses are the full names of the components after installation). Some paths may be different on different systems (e.g., X modules may be installed in /usr/X11R6/ rather than /usr/lib/xorg/).

Problems will arise if applications use the wrong version of a library. This can be the case if there are either old libGL libraries or stale symlinks left lying around. If you think there may be something awry in your installation, check that the following files are in place (these are all the files of the NVIDIA Accelerated Linux Graphics Driver, as well as their symlinks):

    /usr/lib/xorg/modules/drivers/nvidia_drv.so
    /usr/lib/xorg/modules/libwfb.so (if your X server is new enough), or
    /usr/lib/xorg/modules/libnvidia-wfb.so and
    /usr/lib/xorg/modules/libwfb.so -> libnvidia-wfb.so

    /usr/lib/xorg/modules/extensions/libglx.so.390.143
    /usr/lib/xorg/modules/extensions/libglx.so -> libglx.so.390.143

    (the above may also be in /usr/lib/modules or /usr/X11R6/lib/modules)

    /usr/lib/libGL.so.390.143
    /usr/lib/libGL.so.1 -> libGL.so.390.143
    /usr/lib/libGL.so -> libGL.so.1

    (on GLVND-based installations, libGL.so.1 from GLVND may be used instead
    of libGL.so.390.143 as shown above.)

    /usr/lib/libnvidia-glcore.so.390.143

    /usr/lib/libcuda.so.390.143
    /usr/lib/libcuda.so -> libcuda.so.390.143

    /lib/modules/`uname -r`/video/nvidia.{o,ko}, or
    /lib/modules/`uname -r`/kernel/drivers/video/nvidia.{o,ko}

If there are other libraries whose "soname" conflicts with that of the NVIDIA libraries, ldconfig may create the wrong symlinks. It is recommended that you manually remove or rename conflicting libraries (be sure to rename clashing libraries to something that ldconfig will not look at -- we have found that prepending "XXX" to a library name generally does the trick), rerun 'ldconfig', and check that the correct symlinks were made. An example of a library that often creates conflicts is "/usr/lib/mesa/libGL.so*".

If the libraries appear to be correct, then verify that the application is using the correct libraries. For example, to check that the application /usr/bin/glxgears is using the NVIDIA libraries, run:

    % ldd /usr/bin/glxgears
        linux-gate.so.1 =>  (0xffffe000)
        libGL.so.1 => /usr/lib/libGL.so.1 (0xb7ed1000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0xb7ec0000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0xb7de0000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00946000)
        libm.so.6 => /lib/tls/libm.so.6 (0x0075d000)
        libc.so.6 => /lib/tls/libc.so.6 (0x00631000)
        libnvidia-tls.so.390.143 => /usr/lib/tls/libnvidia-tls.so.390.143 (0xb7ddd000)
        libnvidia-glcore.so.390.143 => /usr/lib/libnvidia-glcore.so.390.143 (0xb5d1f000)
        libdl.so.2 => /lib/libdl.so.2 (0x00782000)
        /lib/ld-linux.so.2 (0x00614000)

In the example above, the list of libraries reported by ldd includes libnvidia-tls.so.390.143 and libnvidia-glcore.so.390.143: this is because glxgears links libGL.so.1, which in this case is the legacy, non-GLVND NVIDIA GLX client library. When libGL.so.1 is provided by GLVND instead, libGLX.so.0 and libGLdispatch.so.0 should appear in the output of ldd. If the GLX client library is something other than the NVIDIA or GLVND libGL.so.1, then you will need to either remove the library that is getting in the way or adjust your dynamic loader search path using the LD_LIBRARY_PATH environment variable. You may want to consult the man pages for ldconfig and ldd.