Thanks Geir and Gregory,
I ended up following Gregory's suggestion and creating symlinks to
gcc4 in a private directory and putting it on my path. Something like:
>mkdir ~/mygcc
>ln -s /usr/bin/gcc4 ~/mygcc/gcc
>ln -s /usr/bin/g++4 ~/mygcc/g++
>export PATH=~/mygcc:${PATH}
And that seems to work without affecting other users on the box.
Naveen
On Jan 10, 2007, at 6:36 PM, Geir Magnusson Jr. wrote:
$ sudo -s
$ cd /usr/bin
$ rm gcc
$ rm g++
$ ln -s gcc4 gcc
$ ln -s g++4 g++
$ exit
:D
geir
On Jan 10, 2007, at 1:40 PM, Naveen Neelakantam wrote:
On Jan 10, 2007, at 12:02 PM, Gregory Shimansky wrote:
Geir Magnusson Jr. wrote:
In the past, we've talked about what versions of GCC we will
consider as our "supported" toolchain. We noted that it's
useful to keep using other versions, such as 3.x, to make sure
we're not inadvertently hiding bugs through compiler bugs.
I'd like to tighten up this degree of freedom a little.
What's the harm if we declare 4.x as our default compiler
version? What potential platforms do we lose, or who do we
inconvenience because requiring stdc++.so.6?
AFAIK there are no Linux distributions which have versions that
don't have gcc 4.x included, it is the default compiler in all
last distros versions. So all last (and maybe some before last)
versions of Linux distros should have no problems with libstdc+
+.so.6.
I use RHEL4 update 4 and the default compiler is gcc 3.4.6. It
does include an install of gcc 4.1.0, but it is named "gcc4" and "g
++4".
I am happy to switch to using the gcc 4.x install that I have, but
I am not sure how to tell the build infrastructure to use "gcc4"
instead of "gcc". I did try building DRLVM by typing "./build.sh -
DCXX=gcc4" but I got the following error:
--------------------
BUILD FAILED
/home/dcsfiles/neelakan/Sandbox/Harmony/stable/working_vm/build/
make/build.xml:432: The following error occurred while executing
this line:
/home/dcsfiles/neelakan/Sandbox/Harmony/stable/working_vm/build/
make/build.xml:439: The following error occurred while executing
this line:
/home/dcsfiles/neelakan/Sandbox/Harmony/stable/working_vm/build/
make/build_component.xml:72: The following error occurred while
executing this line:
/home/dcsfiles/neelakan/Sandbox/Harmony/stable/working_vm/build/
lnx_ia32_gcc4_debug/semis/build/targets/common_extra.xml:8: gcc4
is not a legal value for this attribute
--------------------
There are two other alternatives as I see it. I could move the
"gcc4" and "g++4" binaries on my dev box over to "gcc" and "g++",
but that effectively changes the default compiler version for
everyone using the machine. Our dev boxes are shared, so I don't
like that option. The other alternative would be to install a
version of gcc 4.x into a private directory and set my path to
point to it. I can do this, but should I be expected to?
This is a question of how old software (and hardware) we're going
to support. Probably interested parties could backport the code
to the old systems which is not only old Linux distros but also
platforms like old Windows versions.
For the officially built binaries which are supposed to be
certified I think gcc 4.x is the right choice because soon it may
happen that some platforms won't include even compatibility
packages of libstdc++.so.5. For the unofficial distribution
builds which insist on using 3.x (if they exist at all) they may
send us patches to enable building on 3.x if they encounter
problems.
I ran into this playing with Harmony on OLPC, and a developer
expressed a little surprise that we were still using 3.x. I
don't follow the gcc ecosystem at all, so I don't know what
issues there are w/ 4.x, and why we wouldn't move forward to it
as a general (not strict) policy.
I am surprised too. I tried to push moving to gcc 4.x because I
use it on all systems and we've had cases when code which
compiles on 3.x failed to compiled on 4.x because of more strict
syntax checks.
--
Gregory
Naveen