Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Feb 2005 14:11:55 +0000
From:      David Taylor <davidt@yadt.co.uk>
To:        freebsd-amd64@freebsd.org
Subject:   Cross compiling for i386
Message-ID:  <20050215141155.GA29160@gattaca.yadt.co.uk>

next in thread | raw e-mail | index | archive | help
I've recently purchased an AMD Athlon 64 3500+ with an MSI K8T Neo2
motherboard, and FreeBSD seems to work quite well with it.  Other than the 
re0 NIC's problems with hardware checksumming for UDP.  Also I can't
get make build32 to complete without compiler errors, but that's not
critical for now.

On to the main point of this e-mail:

I also have an i386 workstation, which is significantly slower at building
world.  I tried to cross-build the world on the amd64 box, then install it
over an NFS mount.  Eventually, I managed to persuade it to build and
install, but it's not really a process I'd like to repeat every time I
update...

I managed to eventually complete a single build/install world cycle by doing
something like:

<amd64 box>$ cd /usr/src; make buildworld TARGET_ARCH=i386
<i386 box> $ mount <amd64>:/usr/src /usr/src
<i386 box> $ mount <amd64>:/usr/obj /usr/obj
<i386 box> $ make installworld

This however had a few problems.  Running installworld caused the i386 box
to attempt to write to /usr/src, due to newvers.sh, so I needed to mount
/usr/src rw.  Also the built objects appeared to be in /usr/obj/i386, whilst
installworld was looking at /usr/obj.

Then, installworld wanted i386 tools to install with, so I ended up trying

make _worldtmp _legacy _bootstrap-tools _build-tools _cross-tools

I'm not sure they were _all_ required, but eventually it completed a
installworld.  But not before I did manually copied ls and dd into
$INSTALLTMP.  btxld also failed to compile for some reason (i.e. it wasn't
built, no errors) worked correctly when manually built.

The only problem I had with the resulting world was the installed locales
in /usr/share/locale/ were invalid (32 vs 64 bit field somewhere?), and
fortune coredumped when ran.  That was fixed easily enough by recompiling
libc and fortune on the i386 box.

Is this supposed to be possible/supported?  And does anyone have any ideas
how to make it work more automatically?

-- 
David Taylor
davidt@yadt.co.uk
"The future just ain't what it used to be"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050215141155.GA29160>