[Clfs-support] [CLFS-DEV] Embedded GMP builds 64-bit binaries when asked for a 32-bit build
Andrew Bradford
andrew at bradfordembedded.com
Mon Jul 1 04:32:15 PDT 2013
On Sat, Jun 29, 2013, at 10:33 AM, Kirk Terrell wrote:
> While trying to build a system using the latest version of the embedded
> GIT I ran into an issue at the beginning with the GMP build - I'ver
> tried twice. One time GMP compiled at the problem didn't manifest until
> gcc-static, where the it would build with the 64bit versions of GMP, MPC
> and MPFR. Based on some of the research i did it looks like GMP does a
> poor job of guessing processor, which leads to the wrong ABI. I don't
> know what i did different but the build failed, the following is a
> partial listing of the output:
>
>
> checking build system type... atom-pc-linux-gnu
> checking host system type... atom-pc-linux-gnu
Is 'atom-pc-linux-gnu' a valid triplet?
If nothing else, I would think an embedded book build should be using
'-uclibc' as the ending portion of the triplet. Unless I'm
misunderstanding something.
If you are using 'atom-pc-linux-gnu', can you reproduce the issue using
a triplet of 'i686-pc-linux-uclibc' and report back?
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking whether to enable maintainer-specific portions of Makefiles...
> no
> checking ABI=64
> checking compiler gcc -O2 -pedantic -fomit-frame-pointer -m64
> -fexceptions... yes
> checking compiler gcc -O2 -pedantic -fomit-frame-pointer -m64
> -fexceptions -mtune=atom... yes
> checking compiler gcc -O2 -pedantic -fomit-frame-pointer -m64
> -mtune=atom -fexceptions -march=atom... yes
> checking for gcc... gcc
> -------------------------
> -------------------------
> ../fib_table.h:4:1: warning: data definition has no type or storage
> class [enabled by default]
> ../fib_table.h:4:1: warning: type defaults to 'int' in declaration of
> 'Error' [enabled by default]
> ../fib_table.h:4:8: warning: type defaults to 'int' in declaration of
> 'error' [enabled by default]
> ../fib_table.h:4:20: error: expected '=', ',', ';', 'asm' or
> '__attribute__' before 'data'
> make[4]: *** [amd64check.lo] Error 1
> make[4]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2/tests'
> make[3]: *** [check-am] Error 2
> make[3]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2/tests'
> make[2]: *** [check-recursive] Error 1
> make[2]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2/tests'
> make[1]: *** [check-recursive] Error 1
> make[1]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2'
> make: *** [check] Error 2
> ------------------------------
> ----------------------------
> /usr/bin/ld: i386 architecture of input file `rand/.libs/randbui.o' is
> incompatible with i386:x86-64 output
> /usr/bin/ld: i386 architecture of input file `rand/.libs/randmui.o' is
> incompatible with i386:x86-64 output
> mpn/.libs/toom_interpolate_6pts.o: In function
> `__gmpn_toom_interpolate_6pts':
> toom_interpolate_6pts.c:(.text+0x2bc): undefined reference to
> `__gmpn_sublsh2_n_ip1'
> mpn/.libs/toom_interpolate_8pts.o: In function
> `__gmpn_toom_interpolate_8pts':
> toom_interpolate_8pts.c:(.text+0x3ca): undefined reference to
> `__gmpn_sublsh2_n_ip1'
> collect2: ld returned 1 exit status
> make[2]: *** [libgmp.la] Error 1
> make[2]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2'
> make[1]: *** [install-recursive] Error 1
> make[1]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2'
> make: *** [install] Error 2
> exitCode=2
>
>
> ---------------------------
>
> Some references that might be useful:
>
> http://gmplib.org/manual/Build-Options.html
>
> http://lists.gnu.org/archive/html/bug-standards/2012-01/msg00001.html
>
> http://lists.cross-lfs.org/htdig.cgi/clfs-support-cross-lfs.org/2009-September/000746.html
>
> --------------------
>
> i've built succesfully by seting ABI=32, not sure if this is the best
> solution.
Based on [1] it seems it is. And, somewhat good timing to catch this,
as armv8 is 64 bit now and we'll start seeing those real systems out
there, too :)
[1]:http://gmplib.org/manual/ABI-and-ISA.html#ABI-and-ISA
I've opened a bug [2] for this.
[2]:http://trac.cross-lfs.org/ticket/925
Thanks,
Andrew
More information about the Clfs-support
mailing list