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

From: Jeffrey Hundstad
Date: Fri Dec 09 2005 - 19:23:34 EST


Lee Revell wrote:

On Fri, 2005-12-09 at 16:37 -0600, Jeffrey Hundstad wrote:


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.




I added "-m64" to AFLAGS as well and now I get farther:

CC arch/x86_64/ia32/syscall32.o
AS arch/x86_64/ia32/vsyscall-sysenter.o
arch/x86_64/ia32/vsyscall-sysenter.S: Assembler messages:
arch/x86_64/ia32/vsyscall-sysenter.S:14: Error: suffix or operands invalid for `push'
arch/x86_64/ia32/vsyscall-sysenter.S:16: Error: suffix or operands invalid for `push'
arch/x86_64/ia32/vsyscall-sysenter.S:18: Error: suffix or operands invalid for `push'
arch/x86_64/ia32/vsyscall-sysenter.S:25: Error: suffix or operands invalid for `pop'
arch/x86_64/ia32/vsyscall-sysenter.S:27: Error: suffix or operands invalid for `pop'
arch/x86_64/ia32/vsyscall-sysenter.S:29: Error: suffix or operands invalid for `pop'
arch/x86_64/ia32/vsyscall-sigreturn.S:16: Error: suffix or operands invalid for `pop'
make[1]: *** [arch/x86_64/ia32/vsyscall-sysenter.o] Error 1
make: *** [arch/x86_64/ia32] Error 2

Lee




Yes, some commands NEED the -m64 and and WILL NOT work with -m64.

Really, try my method. I've done it without all that making a separate binutils non-sense.
You do need the 64-bit Debian build tools and 64 bit libraries. These are the ones I have:

amd64-libs
amd64-libs-dev
lib64gcc1
lib64gfortran0
lib64ncurses5
lib64ncurses5-dev
lib64objc1
lib64stdc++6
lib64stdc++6-4.0-dbg
lib64z1
lib64z1-dev
libc6-amd64
libc6-dev-amd64


Yes... here's lin64.tar.gz if you didn't catch my little scripts before.
BTW: if there's a better way, please let me know. ...After I got this to work I kinda quit looking ;-)

--
Jeffrey Hundstad

Attachment: lin64.tar.gz
Description: application/gzip