Jean-Claude Gervais wrote: > On Thu, 2007-11-01 at 07:25 -0400, Jason wrote: >> Jean-Claude Gervais wrote: >>> On Wed, 2007-10-31 at 20:43 +0100, Pal Szasz wrote: >>>> Just a little addition: there is another flag which might be involved: >>>> >>>> -mfloat-abi=softfp >>>> >>> How do I pass those flags to the compiler by using crossedev? >>> >>> Here's the shell script I am currently using. >>> I changed it to go with Jason's recommended toolset versions but I am >>> still getting the same linking errors about floating-point >>> incompatibilities... >>> >>> .-.-.-.-.-.-.- >>> >>> #!/bin/bash >>> >>> CBUILD="i686-pc-linux-gnu" >>> >>> CHOST=$CBUILD >>> >>> CTARGET="arm-softfloat-linux-uclibc" >>> >>> #export ROOT="/usr/arm-softfloat-linux-uclibc" >>> >>> PORTAGE_CONFIGROOT="/usr/arm-softfloat-linux-uclibc" >>> >>> UCLIBC_CPU="ARM920T" USE="-*" crossdev -v --binutils 2.17 --gcc 3.4.6-r2 >>> --kernel 2.6.19-r2 --libc 0.9.28.3 --ex-gdb --target >>> arm-softfloat-linux-uclibc >> before you tried this command, did you delete the old attempt? eg >> >> crossdev -C arm-softfloat-linux-uclibc >> >> Chances are you have stale uclibc files installed from a previous >> attempt that are conflicting with the current attempt. > > You are correct, unmerging the gcc did the trick. > >> Also, make sure you unset PORTAGE_CONFIGROOT, CTARGET, CHOST, and >> CBUILD. Those may foul up crossdev (You're not cross-compiling a >> cross-compiling toolchain are you?). Those variable assignments are for >> _after_ the toolchain is built when you want to use it. > > I'm a bit confused. I had those defined while crossdev was running. It > might explain some of the problems I've had. > From your description, it appears generating the toolset is SIMPLER than > I thought.
Well, once you figure out the correct version numbers for everything, yes. ;-) > > Just to be clear; I am executing the following, is it OK? > > -.-.-.-.-.-.-.-.-.-.-.-.- > SYSROOT="/usr/arm-softfloat-linux-uclibc" > UCLIBC_CPU="ARM920T" USE="-*" crossdev -v -S --gcc 3.4.6-r2 --ex-gdb > --target arm-softfloat-linux-uclibc > > -.-.-.-.-.-.-.-.-.-.-.-.- To my knowledge, crossdev doesn't use $SYSROOT. It creates it. So, the SYSROOT is unnecessary, and most likely harmless. You probably want to force the version numbers on your binutils, kernel headers, and uclibc. Just because the newest version compiles and installs doesn't means the authors have tested it how you're going to use it. :-) > Apart from having to create an empty > $SYSROOT/usr/include/asm/page.h > the toolchain builds. > > I came to a erroneous conclusion of setting CBUILD, CHOST, CTARGET and > PORTAGE_CONFIGROOT during crossdev execution from (mis)reading this > documentation: > http://www.gentoo.org/proj/en/base/embedded/cross-development.xml > > Is this document out of date? It mentions setting the ROOT variable, but > crossdev complained that ROOT was not supported... Maybe ROOT is not > intended to be used with crossedev, in which case it's another > misunderstanding on my part. It's not really out of date, it's just difficult to create one set of instructions that work for everybody's unique projects. Using crossdev to create a toolchain and cross-compiling are two _totally_ different events. crossdev is creating executables installed to your host's root filesystem designed to run on your host. Therefore, you _don't_ want to set ROOT because then portage would install it someplace else and it wouldn't be in your PATH. Use the variables with xmerge. > Is there a document I should read that might help? I've found having and expendable box, nightly backups, and a thick skull (for the brick walls) works best. ;-) > Thank you very much for your help, Jason. No problem. Jason. -- [EMAIL PROTECTED] mailing list
