[linux-audio-dev] Cross compiling the kernel

Lee Revell rlrevell at joe-job.com
Thu Dec 8 21:32:55 UTC 2005


On Thu, 2005-12-08 at 20:48 +0100, Kai Ruemmler wrote:
> * Lee Revell <rlrevell at joe-job.com> wrote:
> > All I am trying to do is compile an x86_64 kernel on i386 machine.  It
> > dos not work:
>  
> > $ ARCH=x86_64 make oldconfig
> > <no errors>
>  
> > $ ARCH=x86_64 make 
> 
> [...]
> 
> > What gives?  Do I need a different compiler to build for x86_64?
> 
> Yes. 
> 
> Cross compiling the kernel works like this:
> 
> $ make ARCH=<arch> CROSS_COMPILE=<arch-prefix>
> 
> The gcc cross compiler for x86_64 is usually named x86_64-linux-gcc.
> 
> In the special case of x86 -> x86_64 a 64 bit enabled gcc is sufficient
> though (if your binutils support 64 bit). In all other cases you need 
> a "real" cross compiler.
> 

Does not work.  I installed binutils-multiarch and lib64gcc1 but I still
get the exact same error:

$ make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-
make: x86_64-linux-gcc: Command not found
  CHK     include/linux/version.h
  CC      arch/x86_64/kernel/asm-offsets.s
/bin/sh: x86_64-linux-gcc: command not found
make[1]: *** [arch/x86_64/kernel/asm-offsets.s] Error 127
make: *** [prepare0] Error 2

There does not seem to be any x86_64-linux-gcc package at all for Ubuntu.

If I omit CROSS_COMPILE I get the same error as before:

$ make ARCH=x86_64 
  CHK     include/linux/version.h
  CC      arch/x86_64/kernel/asm-offsets.s
arch/x86_64/kernel/asm-offsets.c:1: error: code model 'kernel' not supported in the 32 bit mode
make[1]: *** [arch/x86_64/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2

Why does GCC insist on running in "the 32 bit mode" even though I told
it ARCH is x86-64?

Why doesn't this Just Work, is Ubuntu really such a piece of shit that
there's no easy way to do it?

Lee




More information about the Linux-audio-dev mailing list