You appear to be compiling the NVIDIA kernel module with
a compiler different from the one that was used to compile
the running kernel. This may be perfectly fine, but there
are cases where this can lead to unexpected behaviour and
system crashes.

If you know what you are doing and want to override this
check, you can do so by setting IGNORE_CC_MISMATCH.

In any other case, set the CC environment variable to the
name of the compiler that was used to compile the kernel.

the help says:

You should compile the NVIDIA kernel module with the same compiler version that was used to compile your kernel. Some lunux kernel data structures are dependent on the version of gcc used to compile it

the thing is that I bought a redhat cd and just installed it! How could I be using a different version to compile it if I just installed it?

Have you used up2date to update packages on your system? Are you using an update kernel? If so, it's certainly possible that you're using a kernel that was compiled with a different compiler than the one currently on your system.

In file included from /lib/modules/2.2.16-22/build/include/linux/interrupt.h: 51,
from nv-linux.h:71,
from nc.c: 14:
/lib/modules/2.2.16-22/build/include/asm/hardirqi23:24: warning:"synchronize-irq" redefined
" /linux/modules/i386-ksyms.ver 138:1: warning: this is the location of the previous definition
cc1:Invalid option 'fixed-range=f10-f15, f32-f127'
cc1:warning: unknown register name: r13
nv.c: In funtion 'nv_get_phys_address':
nv.c:2186Each undeclared identifier is reported only once for each function it appears in)
nv.c:2219:'_PFN_MASIC' undeclared (first use in this function)
nv.c:2695:'warning:cast from pointer to integer of different size