Hi, after reading a whole lot of stuff about binary compatibility of gcc and searching the gcc-help archive, too, I am still somewhat confused regarding the C++ binary compatibility between different versions of gcc. The questions I am trying to answer are these: 1.) My impression is that the whole question of binary compatibility boils down to or is rather a synonym for C++ ABI compatibility (or stability if narrowed down to the question of the binary compatibility of binaries produced by different versions of gcc). Is this correct? 2.) [1] states that starting with GCC 3.2, there is a default C++ ABI (the vendor-neutral C++ ABI) that GCC tries to adhere to. However, there is not a hint of which versions did or did not, or with which versions of GCC an incompatible change of the ABI has happened. [3] indicates then that "It's pretty easy to see when the ABI has changed because we bump the major release number in the soname." of libstdc++.so and as one can figure out looking at [2], this has not happened since libstdc++.so.6.0.0, which came with GCC 3.4.0. From that, I am willing to draw the conclusion that the compiler ABI has been stable since then. Is this correct and is it therefore save to say that a library compiled with GCC 3.4.x can be linked against (dynamically or statically) with GCC 4.y.z, if we assume that all ABI-affecting compiler flags have been the same (esp. -fabi-version=2)? Does the reverse hold, too? I hope someone can clarify this for me. Best regards, Heiko [1] GCC manual, ch. 9, "Binary Compatibility", http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Compatibility.html#Compatibility [2] libstdc++ manual, Appendix B., "ABI Policy and Guidelines", http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html [3] gcc-help, "Re: supporting multiple versions of GCC with a single shared object release?", http://gcc.gnu.org/ml/gcc-help/2009-04/msg00199.html