If newer or equal to 6.0 add:
EXTRA_CFLAGS="-std=gnu11"
If older than 6.0 add:
EXTRA_CFLAGS="-std=gnu89"
For Kernel 3.17.2 ≤ X < 4.1.23:
Copy include/linux/compiler-gcc5.h to your compiler version.
cp include/linux/compiler-gcc5.h include/linux/compiler-gcc15.h
For Kernel X < 3.17.2:
Copy include/linux/compiler-gcc4.h to your compiler version.
cp include/linux/compiler-gcc4.h include/linux/compiler-gcc15.h
For Kernel 3.10 ≤ X < 3.18:
Need to correct arch/x86/tools/relocs.c
sed -i 's/Elf_Addr per_cpu_load_addr;/static Elf_Addr per_cpu_load_addr;/g' arch/x86/tools/relocs.c
For Kernel X < 3.10:
Disable Position-Independent Code.
EXTRA_CFLAGS="-std=gnu89 -fno-pie"
For Kernel 2.6.29 ≤ X < 3.9:
Fix weak directive (gcc 4.1.1 error)
sed -i 's/# error Your version of gcc miscompiles the __weak directive//g' include/linux/compiler-gcc4.h
sed -i 's/# error Your version of gcc miscompiles the __weak directive//g' include/linux/compiler-gcc4.h
# The 2nd is for older version but you can run both for good mesure (;
For Kernel 2.6.25 ≤ X < 3.9:
Need to correct kernel/timeconst.pl
sed -i 's/if (!defined(@val)) {/if (!(defined $hz and exists $canned_values{$hz})) {/g' kernel/timeconst.pl
For Kernel X < 3.9:
Disable Stack Protector.
EXTRA_CFLAGS="-std=gnu89 -fno-pie -fno-stack-protector"
For Kernel 2.6.24 ≤ X < 2.6.37:
Need to correct arch/x86/vdso/Makefile
sed -i 's/-m elf_x86_64/-m64/g' arch/x86/vdso/Makefile
sed -i 's/-m elf_i386/-m32/g' arch/x86/vdso/Makefile