Re: gtkmm and gcc 4.0
- From: Chris Vine <chris cvine freeserve co uk>
- To: gtkmm-list gnome org
- Cc: Roger Leigh <rleigh whinlatter ukfsn org>
- Subject: Re: gtkmm and gcc 4.0
- Date: Sun, 26 Jun 2005 14:36:09 +0100
On Sunday 26 June 2005 13:30, Roger Leigh wrote:
> Changing libstdc++ does break the ABI. Debian is currently using GCC
> 3.3 with libstdc++5. We will, in a few weeks, switch to GCC 4.0 and
> libstdc++6. At this point all the C++ libraries will need to be
> rebuilt, and these problems will go away. It's not possible to use
> multiple versions of libstdc++ in one program, so linking a library
> built against libstdc++5 with a program built with GCC 4.x is going to
> be dodgy.
I agree with that, but saying that compilers have "different ABIs" can mean
different things to different people, particularly with those who remember
the bad old days of gcc-3.95, gcc-3.0, gcc-3.1 and gcc-3.2, when the C++ ABIs
for each were different, and most people were very unhappy about that (in the
sense that the same libraries compiled with each compiler would have
different ABIs). gcc-3.2, 3.3 and 3.4 did not break ABI in that sense (the
same linking and name mangling conventions are used for each).
However, as you say the ABI of libstdc++ did change with the change of the
major library version number from 5 to 6, in the same way that the gtkmm ABI
changed between 2.2 and 2.4, which makes gcc-3.3 and gcc-3.4 incompatible -
made worse by the fact that version 6 of libstdc++ will not compile with
gcc-3.3 (and version 5 will not compile with gcc-3.4) and that as you say you
cannot link the same program against both version 5 and 6 (but they are
parallel installable so that you can have different programs on the same
system linked against different versions provided that any one program and
all its dynamically linked dependencies are linked against only any one
version). In practice, as you say this means that all C++ libraries are
going to have to be recompiled when changing from gcc-3.3 to gcc-3.4 or 4.0.
I had to do exactly that when I moved from gcc-3.3 to 3.4 - but for me this
only meant recompiling gtkmm, Qt and KDE.
gcc-3.4 and 4.0 both use version 6 of libstdc++ and as I understand it you can
interchange gcc-3.4 and 4.0 without difficulties. I may well download
gcc-4.0 to test that out.
Chris.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]