On Mon, 29 Jun 2015 20:08:17 +0200 Murray Cumming <murr...@murrayc.com> wrote: > On Mon, 2015-06-29 at 18:57 +0100, Chris Vine wrote: > > I don't disagree with the rest of your post, but this is wrong. > > Using the gcc-5.1 ABI does not require you to compile C++ code with > > the -std=c++11 flag, > > Ah, thanks. > > > and there is no proposal that fedora should do so. > > From that point of view the _GLIBCXX_USE_CXX11_ABI define is a > > slight misnomer - the point is that the ABI is compliant with > > C++11, not that it is only for C++11. > [snip] > > But the applications do need to be rebuilt in Fedora? So there is an > ABI break? And that rebuild just has to be done with the newer > compiler version?
The essentials are that: 1. _GLIBCXX_USE_CXX11_ABI controls the ABI for all versions of C++. 2. -std=c++[...] controls the API. All C++ code, of all C++ flavours, for any setting of -std=c++[...] uses the same ABI if it uses the same _GLIBCXX_USE_CXX11_ABI setting. Therefore, fedora 22, which uses gcc-5.1 with the old ABI, did not need to recompile any of its C++ binaries, for any version of C++. Fedora 23, which will use gcc-5.1 with the new ABI, will have to recompile all its C++ binaries (libraries and programs)[1], for all versions of C++ those libraries and programs may happen to use. Thus it will have to recompile current gtkmm-3.16 for C++-98 for the new ABI, irrespective of what gtkmm does in the future about C++11 (if anything). So yes, Fedora 23 represented an ABI break - all out-of-distribution third party C++ applications would have had to be recompiled if they were to use any C++ library other than the standard library. Chris [1] As Kalev has mentioned, strictly speaking this does not apply to C++ programs which only use the standard library and use no external C++ libraries such as gtkmm or Qt, because libstdc++ comes in dual binary format. In practice as I understand it fedora have recompiled everything anyway. _______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtkmm-list