Hi, I've got a bug when I compile a 2.2.16 kernel (it comes directly from kernel.org, I didn't take the rpm for that). The error is : checksum.S:231: badly punctuated parameter list in #define checksum.S:237: badly punctuated parameter list in #define make[2]: *** [checksum.o] Erreur 1 make[2]: Quitte le ripertoire `/usr/src/linux-2.2.16/arch/i386/lib' make[1]: *** [first_rule] Erreur 2 make[1]: Quitte le ripertoire `/usr/src/linux-2.2.16/arch/i386/lib' make: *** [_dir_arch/i386/lib] Erreur 2 [root@janus linux]# I've got a SMP bi-PII@450MHz I've tried to break through this bug. Apparently, it's .S instruction that can't be understood. As I don't know a lot about that I give it up. The problem come from /usr/src/linux-2.2.16/arch/i386/lib/checksum.S #define SRC(y...) \ 9999: y; \ .section __ex_table, "a"; \ .long 9999b, 6001f ; \ .previous #define DST(y...) \ 9999: y; \ .section __ex_table, "a"; \ .long 9999b, 6002f ; \ .previous Friendly
You should not compile 2.2.x kernels with gcc, but use kgcc instead. The issue with checksum.S is that it either cannot be preprocessed with -traditional, or must not use GNU varargs macros (gcc 2.96's tradcpp0 does not support restargs macros). This has been fixed in 2.4 kernels (checksum.S is not compiled there with -traditional).
Ok, it works fine. But I still have many problems with this version of gcc (especially on C++).