This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: compiling gcc for multiple targets?
- From: Bernd Jendrissek <berndj at prism dot co dot za>
- To: Ken Wolcott <ken dot wolcott at med dot ge dot com>
- Cc: "Carl B. Constantine" <cconstan at csc dot uvic dot ca>, gcc-help at gcc dot gnu dot org,crossgcc at sources dot redhat dot com
- Date: Thu, 1 Apr 2004 08:35:17 +0200
- Subject: Re: compiling gcc for multiple targets?
- References: <20040330232033.GA1522@csc> <1080747990.26873.50.camel@tuba.moneng.mei.com>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Wed, Mar 31, 2004 at 09:46:30AM -0600, Ken Wolcott wrote:
> On Tue, 2004-03-30 at 17:20, Carl B. Constantine wrote:
> > I've done a google search on this, but most of the information I found
> > was old and the crossgcc list no longer exists, so I thought I would
> > bring it up again.
So who's writing all these replies, then? :)
> > Is there any way to compile gcc and related utils (binutils, gdb) for
> > multiple targets in one binary? So I want to compile it to support both
> > Solaris intel and m68hc11 in one gcc instead of having separate binaries
> > for each?
binutils can be configured with --enable-targets=all, and I use a such
configured binutils daily without problems. But don't be fooled: it
just configured the BFD and opcodes libraries to *support* all targets
binutils knows; the tools still default to the --target=foo with which
you configured the tools. And gas (the assembler) cannot generate code
for any other target than the one specified with --target=foo.
GCC supports only one target at a time, but I think if someone wanted to
put in the work, it'd be not-all-that-hard (for a competent hacker) to
make it possible to use multiple backends. The actual compiler, cc1,
lives in its own target-specific directory, so at a minimum you'd just
need to re-teach the compiler driver (gcc) to find different compilers
again (if it can't still do this - the man page seems to say it can).
More interesting would be if GCC would install a libbackend.so (GPL'ed
and with an undocumented API, of course, to avoid all that
GPL-subversive intermediate-representation stuff) against which a
target-neutral compiler is linked. And if you watch your namespaces
properly, and hookify all the target macros, you might get a
libbackend.so that can be configured with --enable-targets=all.
> > If I cannot do this, but have to compile separate versions
> > (--program-prefix=m6811-elf) are there any issues wrt to libraries if
> > they are installed to the same place? libiberty.so for example?
I have binutils configured with --enable-targets=all, and the resulting
libbfd.so and libopcodes.so live in /usr/lib. I use it daily.
Hmm, no, you'd have to install target libraries (libiberty.{a,so}) to
different places.
- --
"IBM has more patent litigation lawyers than SCO has employees." - unknown
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQFAa7gb/FmLrNfLpjMRAqWBAJ4s9TJnc1rq7byIWMpl42lSuoIsIACgknmk
OexGgbdiG4+flo1CJk+JUeI=
=1lzi
-----END PGP SIGNATURE-----