This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Comparing Bill and Karim's cross-compile scripts. Updating Bill'sto gcc 3.2.3.


Karim et al:

Lately, though, I was thinking about making a list of all available
scripts, and I came up with this (which, of course, includes Bill's
script):
http://www.embeddedtux.org/pipermail/etux/2003-May/000018.html


That's a nice resource.


The copying of asm-generic was added following a recommendation by Russell
King, maintainer of the Linux ARM port.


I can confirm that copying of asm-generic is required for MIPS targets as well.


The way I see it, and the way I tried to word it in the book, is that this
is really just good practice, because if you don't use CROSS_COMPILE=
all the time, you end up forgetting to use it when you need to. You can
skip it if you know what you're doing, as I suggest in the book.


Ditto. In my classroom experience, I've found it less error-prone to teach everyone to specify CROSS_COMPILE as well. Over time, as their skills improve, they "discover" how to fix it for themselves. Provides a nice opportunity for a "teaching moment".


I haven't really found this to be a show-stopper in the cases I've
tested.


I think this is probably a holdover from my experiences with older versions of glibc.


Actually I found this the hard way. I used to put --prefix=$PREFIX,
just like most cross-setup tool instructions out there do,
but then I'd have to set LD_LIBRARY_PATH on the target, which sounded
odd. And sure enough, a few reviewers pointed out during the review that
a correctly build toolchain shouldn't need LD_LIBRARY_PATH=/lib. So I
scratched my head a little more, RTFM'ed, tried a couple of things, and
found that /usr is the only proper setting for --prefix here.

As for "--prefix=/usr" being a special case for Linux, this is straight
out of the GLIBC build instructions. In the "Specific advice for Linux
systems" section of the INSTALL file, it says:
"   Linux expects some components of the libc installation to be in
`/lib' and some in `/usr/lib'.  This is handled automatically if you
configure glibc with `--prefix=/usr'.  If you set some other prefix or
allow it to default to `/usr/local', then all the components are
installed there."


That's pretty much how I got to where I am now, trial and error. :^(


Those experiences haven't found their way back into the build-crossgcc.sh script, mostly because that script was originally intended for non-linux targets. I was under the impression at the time that crossgcc was mainly about non-linux targets, and that users of the script wouldn't want to see the additional complexity required to build a linux toolchain. Perhaps times have changed?

I have tried to keep the instructions identical in as much as possible
across all archs. There are some archs which require a few tricks,
that's true. In as far as a comparison is made between instructions,
however, I do cover all the *Linux* arch-specific tricks I can see in
Bill's script. Most notably, the -Dinhibit_libc hack for ARM is covered
in table 4-2 on p.111.


It's unfortunate that the instructions aren't identical across all architectures. Maybe someday.



b.g. -- Bill Gatliff bgat@billgatliff.com


------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]