Re: gtkmm and gcc 4.0



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]