Compiling a Linux kernel with distcc

Distcc with different architecture hosts

You may notice some strange problems when using distcc on mixed architecture machines. Especially when one of your machines is amd64 and the other i386. The object code that is output is mixed depending on what the output of gcc on each machine is, because distcc just calls the system gcc. Well, how can we make this more robust? In /usr/lib/distcc, there will be files named with GNU configuration strings such as /usr/lib/distcc/i486-linux-gnu-gcc. If you invoke make with CC=/usr/lib/distcc/i486-linux-gnu-gcc instead of CC=distcc, then distcc will only run this compiler if it exists. So this forces the remote hosts to have a correctly configured compiler for this build or they will reject the requests.

Distcc building a Debian kernel package

Here is how to use distcc to build a Debian kernel package using make-kpkg:

$ DISTCC_HOSTS="localhost remotehost1 remotehost2" CONCURRENCY_LEVEL=4
MAKEFLAGS="CC=/usr/lib/distcc/i486-linux-gnu-gcc" fakeroot make-kpkg \
--revision=1 --bzimage --initrd kernel_image kernel_headers

Leave a Reply