Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Apr 2022 19:18:23 +0000
From:      Brooks Davis <brooks@freebsd.org>
To:        "Patrick M. Hausen" <pmh@hausen.com>
Cc:        "freebsd-current@freebsd.org" <freebsd-current@FreeBSD.org>
Subject:   Re: Cross-compile worked, cross-install not so much ...
Message-ID:  <20220425191823.GA89506@spindle.one-eyed-alien.net>
In-Reply-To: <3D48BE93-7D42-4AB2-82D4-88BBF4E1FD40@hausen.com>
References:  <3D48BE93-7D42-4AB2-82D4-88BBF4E1FD40@hausen.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--BOKacYhQ+x31HxR3
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Apr 25, 2022 at 09:07:47PM +0200, Patrick M. Hausen wrote:
> Hi all,
>=20
> getting into FreeBSD ARM64 I tried to compile a current system on a fast =
AMD64 VM and
> now I am somewhat stuck - no help using search engines and the like.
>=20
> 1st step:
>=20
> 	# checkout main aka 14-CURRENT
> 	cd /usr/src
> 	make -j 8 TARGET=3Darm64 TARGET_ARCH=3Daarch64 buildworld buildkernel
>=20
> That worked like a charm and I seem to have a well populated /usr/obj/usr=
/src/arm64.aarch64.
>=20
> 2nd step:
>=20
> I then mounted /usr/src and /usr/obj on my Raspberry Pi via NFS. The bina=
ries
> in /usr/obj are the correct architecture and run perfectly well:
>=20
> 	root@pi8:~ # file /usr/obj/usr/src/arm64.aarch64/bin/sh/sh
> 	/usr/obj/usr/src/arm64.aarch64/bin/sh/sh: ELF 64-bit LSB pie executable,=
 ARM aarch64, version 1 (FreeBSD), dynamically linked, interpreter /libexec=
/ld-elf.so.1, for FreeBSD 14.0 (1400057), FreeBSD-style, not stripped
> 	root@pi8:~ # /usr/obj/usr/src/arm64.aarch64/bin/sh/sh
> 	root@pi8:~ # ^D
>=20
> 3rd step:
>=20
> 	root@pi8:/usr/src # make TARGET=3Darm64 TARGET_ARCH=3Daarch64 installker=
nel
> 	--------------------------------------------------------------
> 	>>> Install check kernel
> 	--------------------------------------------------------------
> 	--------------------------------------------------------------
> 	>>> Installing kernel GENERIC on Mon Apr 25 21:03:58 CEST 2022
> 	--------------------------------------------------------------
> 	cd /usr/obj/usr/src/arm64.aarch64/sys/GENERIC;  MACHINE_ARCH=3Daarch64  =
MACHINE=3Darm64  CPUTYPE=3D CC=3D"cc -target aarch64-unknown-freebsd14.0 --=
sysroot=3D/usr/obj/usr/src/arm64.aarch64/tmp -B/usr/obj/usr/src/arm64.aarch=
64/tmp/usr/bin" CXX=3D"c++  -target aarch64-unknown-freebsd14.0 --sysroot=
=3D/usr/obj/usr/src/arm64.aarch64/tmp -B/usr/obj/usr/src/arm64.aarch64/tmp/=
usr/bin"  CPP=3D"cpp -target aarch64-unknown-freebsd14.0 --sysroot=3D/usr/o=
bj/usr/src/arm64.aarch64/tmp -B/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin" =
 AS=3D"as" AR=3D"ar" ELFCTL=3D"elfctl" LD=3D"ld"  LLVM_LINK=3D"" NM=3Dnm OB=
JCOPY=3D"objcopy"  RANLIB=3Dranlib STRINGS=3D  SIZE=3D"size" STRIPBIN=3D"st=
rip" PATH=3D/usr/obj/usr/src/arm64.aarch64/tmp/bin:/usr/obj/usr/src/arm64.a=
arch64/tmp/usr/sbin:/usr/obj/usr/src/arm64.aarch64/tmp/usr/bin:/usr/obj/usr=
/src/arm64.aarch64/tmp/legacy/usr/sbin:/usr/obj/usr/src/arm64.aarch64/tmp/l=
egacy/usr/bin:/usr/obj/usr/src/arm64.aarch64/tmp/legacy/bin:/usr/obj/usr/sr=
c/arm64.aarch64/tmp/legacy/usr/libexec::/sbin:/bin:/usr/sbin:/usr/bin  make=
  KERNEL=3Dkernel install
> 	/bin/sh: make: Exec format error
> 	*** Error code 126
>=20
> 	Stop.
> 	make[1]: stopped in /usr/src
> 	*** Error code 1
>=20
> 	Stop.
> 	make: stopped in /usr/src
>=20
> So via that complicated PATH setting it seems to run: /usr/obj/usr/src/ar=
m64.aarch64/tmp/legacy/usr/bin/make
>=20
> Which surprisingly is an amd64 binary:
>=20
> 	root@pi8:/usr/src # file /usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/b=
in/make
> 	/usr/obj/usr/src/arm64.aarch64/tmp/legacy/usr/bin/make: ELF 64-bit LSB p=
ie executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter=
 /libexec/ld-elf.so.1, for FreeBSD 14.0 (1400057), FreeBSD-style, stripped
>=20
>=20
> So what did I do wrong?

Cross install is not supported.  As you have seen, certain tools are
bootstrapped on the build host and used during the install process.  You
might be able to get away with nuking
/usr/obj/usr/src/arm64.aarch64/tmp/legacy (or maybe tmp) and then
running `make toolchain` to build native versions of those tools.

-- Brooks

--BOKacYhQ+x31HxR3
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEcBAEBAgAGBQJiZvP+AAoJEKzQXbSebgfAO2YH/AlpfPiw7YHHW9AwJS20cMKz
J4cbCSEpx/g+tc22NhjOwpPFw0Mo4SrpXma1bHBHkPkGHcSCtXt4FcNJWgaxDeA/
rDkZqnR4GzPhnQk1allJp9Dnkaz2VITCyANv2h9M6VcA/kFcp9Xu3Q58XQo94zrr
9q33ckDWyKPRLAuxfTRCFYlkCLbqaSXqBolOUy/8GGHzJMCpMK5n9e2NiGJh1tjn
8geps7gZwGvhswR44b3B2K0mus8yPwQBBhBItunPErAWzCZ9RVkUsnRvLoMyeap6
sR/WtQuQayRqkKOt45V1IYinWvqD2DLrUlKvqjPBor05LYfV5YYwxr+N8HiqzIA=
=/NVF
-----END PGP SIGNATURE-----

--BOKacYhQ+x31HxR3--



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