Re: i386 -> x86_64 cross compile failure (binutils bug?)

Jeffrey Hundstad
2005-12-09T22:38:00Z

Lee Revell wrote:

>I'm trying to build an x66-64 kernel on a 32 bit system (Ubuntu 5.10).
>I added -m64 to the CFLAGS as per the gcc docs. But the build fails
>with:
>
>$ make ARCH=x86_64
> [...]
> CC init/initramfs.o
>
>

I have successfully done this using Debian/Sid.

1. I changed the linux/Makefile:
ARCH ?= x86_64
CROSS_COMPILE ?= x86_x64-linux-

2. The I changed the path to include the following /tmp/lin64/ directory:
PATH=/tmp/lin64:$PATH

3. I made a bunch of scripts as follows all in the /tmp/lin64/ directory:
x86_x64-linux-ar:
#!/bin/bash
ar $@

x86_x64-linux-gcc:
#!/bin/bash
has32=`echo "$@" | grep -- "-m32"`
if [ "$has32" = "" ] ; then
gcc -m64 $@
else
gcc $@
fi

x86_x64-linux-ld:
#!/bin/bash
ld -m64 $@

x86_x64-linux-nm:
#!/bin/bash
nm $@

x86_x64-linux-objcopy:
#!/bin/bash
objcopy $@