From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikita Karetnikov Subject: Re: Initial cross-compilation support Date: Sat, 30 Mar 2013 01:20:13 +0400 Message-ID: <87hajtq4xe.fsf@karetnikov.org> References: <87txoxv7x9.fsf@gnu.org> <201303031726.08488.andreas@enge.fr> <8738wcyxs7.fsf@gnu.org> <87wqsrrho3.fsf@karetnikov.org> <878v57r6f4.fsf@gnu.org> <87boa38cj8.fsf@karetnikov.org> <87y5d7w3j5.fsf@gnu.org> <8738vf6kll.fsf@karetnikov.org> <877gkqo7w7.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:46637) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ULggK-0000lK-O2 for bug-guix@gnu.org; Fri, 29 Mar 2013 17:17:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ULggH-0007ix-Vq for bug-guix@gnu.org; Fri, 29 Mar 2013 17:17:52 -0400 List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: bug-guix@gnu.org --=-=-= Content-Transfer-Encoding: quoted-printable > The absolute file name appeared in your previous message: > /nix/store/g9js73bwv1fl92h1nnf50vf1619irnxf-gcc-cross-sans-libc-mips64e= l-linux-gnu-4.7.2/lib/gcc/mips64el-linux-gnu/4.7.2/libgcc.a # objdump -a /nix/store/g9js73bwv1fl92h1nnf50vf1619irnxf-gcc-cross-sans-lib= c-mips64el-linux-gnu-4.7.2/lib/gcc/mips64el-linux-gnu/4.7.2/libgcc.a | grep= 'file format' | head _m16addsf3.o: file format elf64-little _m16subsf3.o: file format elf64-little _m16mulsf3.o: file format elf64-little _m16divsf3.o: file format elf64-little _m16eqsf2.o: file format elf64-little _m16nesf2.o: file format elf64-little _m16gtsf2.o: file format elf64-little _m16gesf2.o: file format elf64-little _m16lesf2.o: file format elf64-little _m16ltsf2.o: file format elf64-little > After a bit of research, I found ports/sysdeps/mips/preconfigure (in > libc). Apparently, it interprets the OS part of the target triplet to > determine the ABI. So, if you specify --target=3Dmips64el-linux-gnuabi64, > it should automatically build glibc for n64. I changed it like this: diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 69dc9f5..8cd93e9 100644 =2D-- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -87,6 +87,10 @@ GCC that does not target a libc; otherwise, target that = libc." "--disable-libssp" "--disable-libquadmath" "--disable-decimal-float" ; would need = libc + + ;; MIPS64 + "--with-arch=3Dmips64" + "--with-abi=3D64" ))) =20 ,(if libc @@ -231,7 +235,8 @@ XBINUTILS and the cross tool chain." ;;; =20 (define-public xgcc-mips64el =2D (let ((triplet "mips64el-linux-gnu")) + ;; (let ((triplet "mips64el-linux-gnu")) + (let ((triplet "mips64el-linux-gnuabi64")) (cross-gcc triplet (cross-binutils triplet) (cross-libc triplet)))) > So, if you specify --target=3Dmips64el-linux-gnuabi64, > it should automatically build glibc for n64. But 'guix build' doesn't have '--target'. How can I specify it? So I used the following command: # ./pre-inst-env guix build -K gcc-cross-mips64el-linux-gnuabi64 [...] mips64el-linux-gnuabi64-gcc -mabi=3D64 -nostdlib -nostartfiles -r -o /tmp= /nix-build-glibc-cross-mips64el-linux-gnuabi64-2.17.drv-1/build/libc_pic.os= \ -Wl,-d -Wl,--whole-archive /tmp/nix-build-glibc-cross-mips64el-linux-gnuab= i64-2.17.drv-1/build/libc_pic.a -o /tmp/nix-build-glibc-cross-mips64el-linu= x-gnuabi64-2.17.drv-1/build/libc_pic.os mips64el-linux-gnuabi64-gcc -mabi=3D64 -nostdlib -nostartfiles -r -o /tmp= /nix-build-glibc-cross-mips64el-linux-gnuabi64-2.17.drv-1/build/elf/librtld= .map.o '-Wl,-(' /tmp/nix-build-glibc-cross-mips64el-linux-gnuabi64-2.17.drv= -1/build/elf/dl-allobjs.os /tmp/nix-build-glibc-cross-mips64el-linux-gnuabi= 64-2.17.drv-1/build/libc_pic.a -lgcc '-Wl,-)' -Wl,-Map,/tmp/nix-build-glibc= -cross-mips64el-linux-gnuabi64-2.17.drv-1/build/elf/librtld.mapT /tmp/nix-build-glibc-cross-mips64el-linux-gnuabi64-2.17.drv-1/build/libc_pi= c.a: could not read symbols: Archive has no index; run ranlib to add one collect2: error: ld returned 1 exit status make[2]: *** [/tmp/nix-build-glibc-cross-mips64el-linux-gnuabi64-2.17.drv-1= /build/elf/librtld.map] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory `/tmp/nix-build-glibc-cross-mips64el-linux-gnuab= i64-2.17.drv-1/glibc-2.17/elf' make[1]: *** [elf/subdir_lib] Error 2 make[1]: Leaving directory `/tmp/nix-build-glibc-cross-mips64el-linux-gnuab= i64-2.17.drv-1/glibc-2.17' make: *** [all] Error 2 phase `build' failed after 258 seconds note: keeping build directory `/tmp/nix-build-glibc-cross-mips64el-linux-gn= uabi64-2.17.drv-1' builder for `/nix/store/hdga358q2fcdcwlzy9g72cc6xaf2wvza-glibc-cross-mips64= el-linux-gnuabi64-2.17.drv' failed with exit code 1 @ build-failed /nix/store/hdga358q2fcdcwlzy9g72cc6xaf2wvza-glibc-cross-mips= 64el-linux-gnuabi64-2.17.drv /nix/store/ca0s9nrmmfy654fjyg0rm73n3pnc677n-gl= ibc-cross-mips64el-linux-gnuabi64-2.17 1 builder for `/nix/store/hdga358q2f= cdcwlzy9g72cc6xaf2wvza-glibc-cross-mips64el-linux-gnuabi64-2.17.drv' failed= with exit code 1 cannot build derivation `/nix/store/c4avrlc8bg33jsmwq9rgj8z8vyc69sdy-gcc-cr= oss-mips64el-linux-gnuabi64-4.7.2.drv': 1 dependencies couldn't be built error: build failed: build of `/nix/store/c4avrlc8bg33jsmwq9rgj8z8vyc69sdy-= gcc-cross-mips64el-linux-gnuabi64-4.7.2.drv' failed config.log: [...] configure:7187: mips64el-linux-gnuabi64-gcc -o conftest -g -O2 -mabi=3D64= conftest.c -lgd -lpng -lz -lm >&5 conftest.c:19:16: fatal error: gd.h: No such file or directory [...] configure:7209: checking for is_selinux_enabled in -lselinux configure:7234: mips64el-linux-gnuabi64-gcc -o conftest -g -O2 -mabi=3D64 = conftest.c -lselinux >&5 /nix/store/19rp26b4hzpdxnday60fxv7ygr5445aj-gcc-cross-sans-libc-mips64el-li= nux-gnuabi64-4.7.2/libexec/gcc/mips64el-linux-gnuabi64/ld: cannot find crt1= .o: No such file or directory /nix/store/19rp26b4hzpdxnday60fxv7ygr5445aj-gcc-cross-sans-libc-mips64el-li= nux-gnuabi64-4.7.2/libexec/gcc/mips64el-linux-gnuabi64/ld: cannot find crti= .o: No such file or directory /nix/store/19rp26b4hzpdxnday60fxv7ygr5445aj-gcc-cross-sans-libc-mips64el-li= nux-gnuabi64-4.7.2/libexec/gcc/mips64el-linux-gnuabi64/ld: cannot find -lse= linux /nix/store/19rp26b4hzpdxnday60fxv7ygr5445aj-gcc-cross-sans-libc-mips64el-li= nux-gnuabi64-4.7.2/libexec/gcc/mips64el-linux-gnuabi64/ld: cannot find -lc /nix/store/19rp26b4hzpdxnday60fxv7ygr5445aj-gcc-cross-sans-libc-mips64el-li= nux-gnuabi64-4.7.2/libexec/gcc/mips64el-linux-gnuabi64/ld: cannot find crtn= .o: No such file or directory collect2: error: ld returned 1 exit status [...] configure:7404: mips64el-linux-gnuabi64-gcc -o conftest -g -O2 -mabi=3D64 = conftest.c >&5 conftest.c:22:19: fatal error: stdio.h: No such file or directory compilation terminated. There are other errors. But I guess that they all have the same cause (i.e., GCC can't find the needed files). Is it correct? --=-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQIcBAEBAgAGBQJRVgWUAAoJEM+IQzI9IQ385yEP/il6mtVS6oI2vtJ5LpNAnG9c alpTeH4fxQOai26QCOb05oEdFqVDjJMjYI2qlOxFIiWUIoERd/GJg4qZlw2e6WEP 6dPP6d+bMd4tzQHYeHzimwgMm/V5e8s498xwymbvug5gFchhTZuzDWYki4PiclRt 95H8gsNXVGubm3nKTOlTY3Wt71RGQodWrCtb2HrMioav8mPJ2b0HzMDCvRdM+HzW DyE2ftUKAbS+C1FzJGmF9JBeRjZ0RkJZmrCOqUakigUZ7QB7jfHDGYrSuKJRnA6o gHbGf9TiK1cUouT/jVsAOffmUhTdqcZQN65/db/IjVUQgXHmNG37af8qKJyegCus bP0D4SF8K3tOqhe7BEJ/8zl+hPSKl0npE0BJIMUT7G5rqu1g6RX8a9G3tQoO6I8/ pO/3TTsdvxJR8y7DACx3IsT8G/ZSMXPz4CxZ2lh2yza0CYcJRQXHCU3A0mTJ5j/4 RZBrqyg7Pv08k4uthpEXDiYI3GqaIauNaJ8VAOkK8lkQgviG7/vRXoBS7xseBIdM JrGFISQa0Xs/7jGvEw+72ME6FrKxMDv3JwwOm/e3VyMarKCxB9osgp4/fCMh9DA4 J8wvXa7F7EwjaUR2MVoDWazKr3A3OlFNcChBDohMWnCa7aN1lnKOj1JGe+HMSEJZ umirbDQi/bjTEbuXDDVv =KiHo -----END PGP SIGNATURE----- --=-=-=--