This is the mail archive of the crossgcc@sourceware.org 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: Support for multiple, concurrent version of tools


On 8/19/09, Diwaker Gupta <diwaker@floatingsun.net> wrote:
> I'm using crosstool-ng 1.4.2. In the toolchain I'm trying to build, I'd like to
>  be able to have multiple versions of tools (eg, different gcc versions) at the
>  same time. Is this possible using crosstool-ng?

There are two issues; differentiating between the "gcc" command names
you call for the differen compilers, and making sure the support files
and libraries are stored in separate directories.

The support directory names should all contain the target tuple
(arm-unknown-linux-gnu or whatever) as well as the compiler version.
For example, one version here stores its stuff in
/usr/local/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/* and
.../libexec/... the same.  If you need multiple comfigurations for the
same target and version, you can set the "vendor" field ("unknown" in
the above example) to something of your own invention - I use
armv4tl-crunch-linux-gnueabi for my hacked-up version of gcc
configured to generate code for armv4 by default and modified to
support the MaverickCrunch FPU. The first part is significant, but the
"crunch" here can be anything and carries no meaning.

To differentiate the command names "gcc", "g++" and so on, you can use
the "--extra-version" parameter. Debian carries several different
major versions by setting --extra-version=-4.2 for its version of
gcc-4.2.3 and --extra-version=-4.3 for gcc-4.3.2 so as to get gcc-4.2
and gcc-4.3 commands.  You also get arm-unknown-linux-gnueabi-gcc-4.2
long command names, so you may be happy just to set the vendor string
differently in your different versions.

I assume there are options in the crosstool-ng menu system to set the
four-part target tuple and/or the extraversion string

I have had issues in the past with it installing, for example, C++'s
mf-runtime.h in the same place for different installed versions, but
that will probably only bother you if you are making OS distribution
packages of it which require all files to be unique.
Also watch out for it installing stuff in
/usr/local/lib/lib{gcc,gomp,iberty,mudflap}* - these will override
your main system compiler's support files with your funny versions and
probably break the main compiler. If it does that, just move those
lib* diretories into (e.g.)
/usr/local/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/

Good luck, let us know how it goes for you under crosstool-ng

    M

--
For unsubscribe information see http://sourceware.org/lists.html#faq


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