These problems are generally caused by the build using the wrong kernel
header files (ie header files for a different kernel version than
the one you are running). The convention used to be that kernel
header files should be stored in "/usr/include/linux/", but that
is deprecated in favor of "/lib/modules/`uname -r`/build/include".
The nvidia-installer should be able to determine the location on your
system; however, if you encounter a problem you can force the build
to use certain header files by using the --kernel-include-dir option.
Obviously, for this to work, you need the appropriate kernel header
files installed on your system. Consult the documentation that came
with your distribution; some distributions do not install the kernel
header files by default, or they install headers that do not coincide
properly with the kernel you are running.