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: crosstool for native compiler on new system.


One other important thing to mention. The native gcc build installs a
"specs" file under TARGET_ROOT (I believe to
$TARGET_ROOT/$PREFIX/lib/gcc/$TARGET/x.y.z/specs) that represents the
cross-compiler, not the native compiler. You'll need to delete that file
after building the native compiler in order for the native compiler to
run correctly. Probably this step belongs in crosstool.sh.

Steve
www.digidescorp.com

-----Original Message-----
From: Steven J. Magnani [mailto:steve@digidescorp.com] 
Sent: Wednesday, February 02, 2005 10:25 AM
To: 'Clemens Koller'; 'crossgcc@sources.redhat.com'
Subject: RE: crosstool for native compiler on new system.


Guten Tag Clemens, 

I recently went through something similar, cross-building for ARM on
i386. One thing I found is that if you use the crosstool scripts without
change to produce a native compiler, the native compiler believes it is
a cross-compiler. This causes it to behave slightly differently than you
might expect when running it natively. Also I think there are parts of
glibc (i.e. ldd) that build only when they believe they are for a native
compiler.

I ended up patching the crosstool-0.28-rc37 source to allow
cross-building of a "true" native compiler. The native cross-build mode
is triggered by GCC_HOST = TARGET. Then, TARGET_ROOT specifies the root
of your native system as mounted on your build system (i.e. the
so-called DESTDIR).

Some things to note:

* The patch updates all.sh and crosstool.sh. It does not update
crosstool-cygwin.sh.

* The changes to crosstool.sh may be a little more than you need. I also
changed the "sysroot"ing from ${PREFIX}/${TARGET}/sys-root to just
$PREFIX when building a cross-compiler (as opposed to cross-building a
native compiler). Rather than try to back that part of it out and hand
you something less stable, I left it in.

* I added a "--nopurge" option to all.sh that prevents it from deleting
previous results. I find this helpful when cross-building a native root
filesystem - if I regenerate the toolchain, I don't want to lose the
rest of my cross-userland doing it.

* crosstool.sh puts results of a native compiler build beneath
TARGET_ROOT. The all.sh script doesn't know whether the build is for a
cross compiler or a native compiler; it assumes that the build results
are in $PREFIX. Until this discrepancy is reconciled you should probably
always specify --nopurge when calling all.sh.

* I disabled mkoverride.sh, since I didn't need it for what I was doing
and didn't have time to dig into it. Looking at it this morning, I think
it might have a bug when crosstool is run with USE_SYSROOT - the paths
coded into mkoverride are the "plain old way" not the "spiffy new
sysroot way".

Attached are 4 files - the patch to crosstool-0.28-rc37, the script I
use for building the cross-compiler, the script I use to build the
native compiler, and the .dat file I use.

Hope these help. Feedback is most welcome - these are works in progress.

Regards,
Steve Magnani
www.digidescorp.com


-----Original Message-----
From: Clemens Koller [mailto:clemens.koller@anagramm.de] 
Sent: Wednesday, February 02, 2005 8:39 AM
To: crossgcc@sources.redhat.com
Subject: crosstool for native compiler on new system.


Hello,

Well, some days ago, I was successfully running crossgcc on MPC8540 
(e500, SPE) (no changes were necessary within crosstool, to answer your
last question, Steve.)

Now I want to use or re-use the binaries for a new Linux From Scratch 
root on a harddisk in i.e. /mnt.

So, my question is: what things do I need to take care about to get my
new compiler+binutils+? as my (one and only) native compiler in /usr/bin
on the host system as well as in the new root of /mnt/usr/bin. Is it
okay to set the TARGET_DIR to put the compiler to i.e. 
/mnt/usr/bin (which might be dangerous)?

It is possible to relocate the whole (crossgcc-) build, copy the libs,
edit the specs file and move (or put symlinks)
powerpc-linux-gnuspe-* to /usr/bin/*
(I would prefer not to use any powerpc-linux-sth-prefixes anymore).

Is the specs file the one and only place for gcc+friends which needs to
fit the environment?

Well, I've read several howtos as well as the LFS docu...
but I still feel unsafe in what I am doing. Can you please point me to
some more installation FAQs or examples or give me a short sketch of the
things I need to take care?

Is it possible to get out a tar.gz'ed file out of crosstool with only
the binaries which are needed in a plain, native Linux? (like a
--buildnativetar)

Thank you!

-- 
Clemens Koller
_______________________________
R&D Imaging Devices
Anagramm GmbH
Rupert-Mayer-Str. 45/1
81379 Muenchen
Germany

http://www.anagramm.de
Phone: +49-89-741518-50
Fax: +49-89-741518-19




------
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]