On Mon, Jul 1, 2013, at 09:07 AM, Kirk Terrell wrote: > On 07/01/2013 04:32 AM, Andrew Bradford wrote: > > 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 > > > I've built a complete system for vexpress-a9 running on QEMU using the > book w/ the following three exceptions: > > 1) added the --build=${CLFS_HOST} option when configuring GMP. For > tracker 925 - I'm not setting the triplet, GMP is guessing the triplet > for the host/build machine. It looks like some newer atom processors are > 64 bit, mine is too old to be one of those.
Ah, sorry, I should drink coffee *before* emailing :) Now I see that GMP is picking build and host, not target. Are you building on a multilib distribution? I'm curious why, if you've only got 32 bit abilities on your host, that GMP is even able to think you have 64 bit. Or am I still not understanding this issue? > 2) Did not execute the second stage for gcc - I think I only need > the > second stage for building C++, or other, compilers? You'll need gcc-final if you want dynamic linking, I believe, plus for GCC to know to use uClibc vs just the built-in newlib. You should always build gcc-final. > 3) Deselected networking/nslookup in busybox . > > for the build I used the following parameters: > > export CLFS_ARCH=arm > export CLFS_ABI="aapcs-linux" > export CLFS_HOST="i686-cross-linux-gnu" > export CLFS_ENDIAN="little" > export CLFS_ARM_MODE="arm" > export CLFS_ARM_ARCH="armv7-a" > export CLFS_FLOAT="soft" > export CLFS_TARGET="armel-unknown-linux-uclibceabi" > export CC="armel-unknown-linux-uclibceabi-gcc" > > > I did not need the soft float patch ( Ticket #919) > I did not have an issues w/ the .size directive ( Ticket #876/ Tracker > #917) OK, good to know! :) > Here is an excerpt from the busybox output for the issues w/ nslookup. > > networking/lib.a(nslookup.o): In function `nslookup_main': > nslookup.c:(.text.nslookup_main+0x2c): undefined reference to > `__res_init' > nslookup.c:(.text.nslookup_main+0x54): undefined reference to > `__res_state' > nslookup.c:(.text.nslookup_main+0x78): undefined reference to > `__res_state' > nslookup.c:(.text.nslookup_main+0x8c): undefined reference to > `__res_state' > collect2: error: ld returned 1 exit status > make: *** [busybox_unstripped] Error 1 > > I have not had a chance to see if a tweak to the uClibc config file > would address this. Is this without building gcc-final? If so, I expect all sort of issues without building a gcc-final. -Andrew _______________________________________________ Clfs-support mailing list [email protected] http://lists.cross-lfs.org/listinfo.cgi/clfs-support-cross-lfs.org
