Linux 2.2.17 can't compile and it only happens in Redhat 7, worked fine in Redhat 6.2. The following is the error output. make[1]: Entering directory `/usr/src/linux-2.2.17/arch/i386/lib' make all_targets make[2]: Entering directory `/usr/src/linux-2.2.17/arch/i386/lib' cc -D__KERNEL__ -I/usr/src/linux-2.2.17/include -D__ASSEMBLY__ - traditional -c checksum.S -o checksum.o checksum.S:231: badly punctuated parameter list in #define checksum.S:237: badly punctuated parameter list in #define make[2]: *** [checksum.o] Error 1 make[2]: Leaving directory `/usr/src/linux-2.2.17/arch/i386/lib' make[1]: *** [first_rule] Error 2 make[1]: Leaving directory `/usr/src/linux-2.2.17/arch/i386/lib' make: *** [_dir_arch/i386/lib] Error 2
2.2 kernels cannot be compiled by 2.96 compiler (due to kernel issues, there are patches floating around to make it compile), there is a kgcc compiler in the distribution which should be used instead. If you compile 2.2.18pre and above, it should pick it up automatically, otherwise you should specify it on kernel command line. make CC='kgcc -D__KERNEL__ -I$(HPATH)' The failure above is caused by using GCC extensions in traditional preprocessor (where they are purposedly not implemented after split of preprocessors), so in this case removing of -traditional fixes it.