The NVIDIA Accelerated Linux Driver Set consists of the following
components (the file in parenthesis is the full name of the component
after installation; "x.y.z" denotes the current version -- in these
cases appropriate symlinks are created during installation):
o An X driver (/usr/X11R6/lib/modules/drivers/nvidia_drv.o);
this driver is needed by the X server to use your NVIDIA hardware.
The nvidia_drv.o driver is binary compatible with XFree86 4.0.1 and
greater, as well as the Xorg X server.
o A GLX extension module for X
(/usr/X11R6/lib/modules/extensions/libglx.so.x.y.z); this module is
used by the X server to provide server-side glx support.
o An OpenGL library (/usr/lib/libGL.so.x.y.z); this library
provides the API entry points for all OpenGL and GLX function calls.
It is linked to at run-time by OpenGL applications.
o An OpenGL core library (/usr/lib/libGLcore.so.x.y.z); this
library is implicitly used by libGL and by libglx. It contains the
core accelerated 3D functionality. You should not explicitly load
it in your X config file -- that is taken care of by libglx.
o Two XvMC (X-Video Motion Compensation) libraries: a static library
and a shared library (/usr/X11R6/lib/libXvMCNVIDIA.a,
/usr/X11R6/lib/libXvMCNVIDIA.so.x.y.z); please see (app-p) APPENDIX P:
XVMC SUPPORT for details.
o A kernel module (/lib/modules/`uname -r`/video/nvidia.o
or /lib/modules/`uname -r`/kernel/drivers/video/nvidia.o); this
kernel module provides low-level access to your NVIDIA hardware for
all of the above components. It is generally loaded into the kernel
when the X server is started, and is used by the X driver and OpenGL.
nvidia.o consists of two pieces: the binary-only core, and a kernel
interface that must be compiled specifically for your kernel version.
Note that the linux kernel does not have a consistent binary interface
like the X server, so it is important that this kernel interface be
matched with the version of the kernel that you are using. This can
either be accomplished by compiling yourself, or using precompiled
binaries provided for the kernels shipped with some of the more
common linux distributions.
o OpenGL and GLX header files
/usr/share/doc/NVIDIA_GLX-1.0/include/GL/glx.h); these files can also
be installed in /usr/include/GL/ by passing the "--opengl-headers"
option to the .run file during installation.
o The nvidia-tls libraries (/usr/lib/libnvidia-tls.so.x.y.z and
/usr/lib/tls/libnvidia-tls.so.x.y.z); these files provide thread
local storage support for the NVIDIA OpenGL libraries (libGL,
libGLcore, and libglx). Each nvidia-tls library provides support
for a particular thread local storage model (such as ELF TLS),
and the one appropriate for your system will be loaded at run time.
o The application nvidia-installer (/usr/bin/nvidia-installer) is
NVIDIA's tool for installing and updating NVIDIA drivers. Please see
(sec-02) INSTALLING THE NVIDIA DRIVER for a more thorough description.
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 Driver Set,
plus their symlinks):
/usr/X11R6/lib/modules/extensions/libglx.so -> libglx.so.x.y.z
/usr/lib/libGL.so.x -> libGL.so.x.y.z
/usr/lib/libGL.so -> libGL.so.x
/usr/lib/libGLcore.so.x -> libGLcore.so.x.y.z
/lib/modules/`uname -r`/video/nvidia.o, or
Installation will also create the /dev files:
crw-rw-rw- 1 root root 195, 0
crw-rw-rw- 1 root root 195, 1
crw-rw-rw- 1 root root 195, 2
crw-rw-rw- 1 root root 195, 3
crw-rw-rw- 1 root root 195, 255
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. Some libraries that often create conflicts are
"/usr/X11R6/lib/libGL.so*" and "/usr/X11R6/lib/libGLcore.so*".
If the libraries checks out, then verify that the application is using
the correct libraries. For example, to check that the application
/usr/X11R6/bin/gears is using the NVIDIA libraries, you would do:
$ ldd /usr/X11R6/bin/gears
libglut.so.3 => /usr/lib/libglut.so.3 (0x40014000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x40046000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x40062000)
libc.so.6 => /lib/libc.so.6 (0x4009f000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x4018d000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40196000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x401ac000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x401c0000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x401cd000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x401d6000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x402ab000)
libm.so.6 => /lib/libm.so.6 (0x4048d000)
libdl.so.2 => /lib/libdl.so.2 (0x404a9000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404ac000)
Note the files being used for libGL and libGLcore -- if they are something
other than the NVIDIA libraries, then you will need to either remove the
libraries that are getting in the way, or adjust your ld search path.
If any of this seems foreign to you, then you may want to read the man
pages for "ldconfig" and "ldd" for pointers.