Hi Edward,
On Thu, 29 Aug 2002 17:14:11 -0700 (PDT)
Edward Chen <edward@SLAC.stanford.edu> wrote
concerning "[ROOT] How to specify the compiler":
> Hi - if I have a different compiler in a different directory, is
> there a way to tell ROOT to use that compiler? Thanks.
Watch out when you're mixing compilers. The different C++ compilers
have different mangling schemes [1] (except the ones that follows the
Intel C++ ABI standard, which to my knowledge only includes GCC and
Intel's C++ compilers), with the result that code compiled with
compiler A can not be used with code compiled by compiler B.
This may sound stupid, in which case you're right. The issue is
largely historical. In C++ ARM (C++ Annotated Reference Manual - the
original Stroustrup design), it was actually recommended that
compilers implemeted different mangling schemes, to avoid
incompatibilities. Now that was all well and fine back when C++
wasn't a standard and compilers couldn't be expected to behave
comformingly.
However, now we _have_ a standard, and the incompatibilities is
non-issue: if a compiler doesn't implement the standard, it's simply
not a C++ compiler. There's actually very few `C++ compilers' that are
remotely close to implementing the standard: GCC and Intel's C++
compilers are some of them. Other `compilers' are way off, like MSVC,
KCC, and so on. According to this [2] Micros**t will not even try to
make MSVC to compliant with the standard! There's no, to the best of
my knowledge, any one compiler that really implments the standard -
except perhaps if Bjarne Stroustrup has one, but he's not talking.
If your really question is: How do I compile ROOT with a compiler
that's not the default for my platform, the first thing you should do,
is to run
./configure --help
and check the list of Os-architecture-compiler combinations that are
directly supported. For example, you'll see
linux for Linux egcs 1.1.x, gcc 2.9x, gcc 3.x and glibc
linuxalphaegcs for Alpha Linux egcs and glibc
linuxarm for ARM Linux egcs and glibc
linuxdeb for Debian GNU/Linux v2.1+ gcc and glibc
linuxdeb2 for Debian GNU/Linux v2.0 egcs and glibc
linuxdeb2ppc for PPC Linux based on Debian v2.0
linuxia64ecc for Itanium Linux Intel ecc and glibc
linuxia64gcc for Itanium Linux gcc 2.9x and glibc
linuxia64sgi for Itanium Linux sgiCC and glibc
linuxicc for Linux Intel's icc and glibc
linuxkcc for Linux KAI's KCC and glibc
linuxpgcc for Linux pgcc and glibc
linuxppcegcs for PPC Linux egcs and glibc
linuxrh42 for Linux gcc 2.7.x.x and libc5
linuxrh51 for Linux gcc 2.7.x.x and glibc
linuxsuse6 for Linux (SuSE v6.0) egcs and glibc
The assumption of architecture for the Linux targets, except where
explicitly noted, is that it's an i386.
[BTW, I really don't like the implication of the `linux' target, that
Red Hat is the `true' or whatever GNU/Linux. Anyway, that target
should work for most GNU/Linux distributions, as most of them are now
using GCC-2.95.x or better.]
If you do not find you're os-architecture-compiler combination, try to
write an appropiate `config/Makefile.<os-architecture-compiler>' and
add the `os-architecture-compiler' identifier to the file
`config/ARCHS'. If you get it to work, please send a patch to
`rootdev@root.cern.ch' so that others may benefiet from your wisdom.
You can also try to simply override the settings when you build:
prompt> ./configure linux
prompt> make CC=my-c-compiler CXX=my-c++-compiler
prompt> make install CC=my-c-compiler CXX=my-c++-compiler
This may help you make the
`config/Makefile.<os-architecture-compiler>' file.
If your question is along the lines: I have installed GCC-x.yy.zz in
`/some/where/bin/gcc' and I want to use that instead of
`/usr/bin/gcc', then you simply need to put `/some/where/bin' into
your PATH environment variable _before_ `/usr/bin'.
Hope that helps you.
Yours,
____ | Christian Holm Christensen
|_| | -------------------------------------------------------------
| | Address: Sankt Hansgade 23, 1. th. Phone: (+45) 35 35 96 91
_| DK-2200 Copenhagen N Cell: (+45) 24 61 85 91
_| Denmark Office: (+45) 353 25 305
____| Email: cholm@nbi.dk Web: www.nbi.dk/~cholm
| |
[1] If you don't know what `mangling means', look at the posts found
by the search
http://www.google.com/custom?hl=en&lr=&ie=ISO-8859-1&cof=L%3Ahttp%3A%2F%2Froot.cern.ch%2Froot%2Fimages%2Frooticon.gif%3BAH%3Acenter%3B&domains=root.cern.ch&q=
[2] http://www.codeproject.com/interview/stanlippman14nov2001.asp
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:06 MET