Cross-comilation from amd64 to i686 - issue with /usr/src/linux/arch/x86/boot/tools/build

From: Arthur Marsh
Date: Mon Sep 13 2021 - 10:29:46 EST



Hi, I had a problem when doing a Linux kernel cross compile from amd64 to i386/i686 a few days ago which I solved quickly, but wonder if the issue points to a problem:

/usr/src/linux/arch/x86/boot/tools/build had (apparently) been compiled over a year earlier when I was running under amd64 without multilib support, when I installed the i386/i686 gcc-11 under amd64, and attempted to cross-compile the kernel for i386, I received an error about bzImage:

BUILD arch/x86/boot/bzImage
make[5]: *** [arch/x86/boot/Makefile:84: arch/x86/boot/bzImage] Error 139
make[5]: *** Deleting file 'arch/x86/boot/bzImage'
make[4]: *** [arch/x86/Makefile:273: bzImage] Error 2


Once I removed the old /usr/src/linux/arch/x86/boot/tools/build binary and re-ran the kernel build, a new "build" binary was built and the kernel build process succeeded and the built kernels ran fine on my i386/i686 system.

I'm not sure if running a cross-compile from amd64 to i386 for the first
time or in fact any update of the host CC or cross-compiler CC should have triggered a recompilation of /usr/src/linux/arch/x86/boot/tools/build.c

Kernel build command for the cross-compilation was:

make ARCH=i386 CROSS_COMPILE=i686-linux-gnu- CC=i686-linux-gnu-gcc-11 -j6 menuconfig bindeb-pkg

Arthur.