[CALUG] GCC Woes

Bryan J Smith b.j.smith at ieee.org
Tue Feb 9 13:58:00 EST 2010


On Mon, 2010-02-08 at 18:40 -0700, Ben W wrote:
> I sincerely appolgize for all the SPAM I'm generating,

I personally think it's good info.

The comment about "learning curve" was rather humorous.  As someone who
has done both Embedded NT/XP and Windows CE/Pocket PC, I'll take custom
linking Linux to custom linking Windows any day.

Heck, you couldn't even use different kernel/toolchain versions on
Windows.  Most code is very fixed to specific releases in Windows. ;)

> but I wanted to post the fix to my (latest) issue, when dpkg is used
> to install an older version of gcc the system adds /usr/bin/gcc-2.95
> as the command to start it, make looks for the command gcc (obviously)
> and therefore fails. By removing renaming the command to /usr/bin/gcc
> this is resolved.

You should be handling this in your Makefile options.  You don't want to
be resolving things by renaming multiple, conflicting GCC versions.
Different GCC versions should renamed labeled on the system for a
reason.

Also know that before GCC 3.0 (technically GCC 2.96, long story), you
can_not_ often mix'n match different GCC objects, as the libstdc++ are
incompatible in run-time.  This causes all sorts of issues at run-time
when you start mixing 2.7 or 2.8 with 2.91 (EGCS) with 2.95, etc...

The GCC world was very, very screwed up before Cygnus got ahold of it.
I praised Red Hat when they pushed EGCS 1.1 (later became 2.91) after
GCC 2.7 instead of moving to GCC 2.8.  A lot of distros were doing 2.7,
2.8 then even variants of 2.95 (some 2.95 didn't build the kernel
correctly).

And despite a lot of commentary out there (many of which ignores the
fact that ANSI C++ was the main incompatibility), finally getting to the
new GCC 3.0 object model in (would would become) GCC 2.96/3.0 solved a
crapload of object compatibility.  At the same time, it was compatible
with the C ABI of EGCS (after all, Cygnus -- bought by Red Hat around
the same period -- wrote it).

So much so that you can still run GCC/LibStdC++ 296 binaries/libraries
today on ABIs in GCC 4.x.


-- 
Bryan J Smith <b.j.smith at ieee.org>





More information about the CALUG mailing list