2025-07-06 Compile 2.6.30 to 6.16 using GCC 15

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