The main point of the GCC 3.2 release is to have a relatively stable and common C++ ABI for GNU/Linux and BSD usage, following the Itanium C++ ABI.
Unfortunately this means that GCC 3.2 is incompatible with GCC 3.0 and GCC 3.1 releases.
But for real interoperability of C++ shared libraries and C++ programs, not only does a GCC 3.2 based compiler have to be used, but it also has to be built in a certain environment and with some specific options.
We strongly advise all developers and distributors to follow the guidelines given here for GNU/Linux systems.
Configure GCC with this options:
--enable-__cxa_atexit
GCC is configured by default on GNU/Linux systems also with these two flags, do not change them to any other value:
--enable-threads=posix --enable-shared
If you do not use these options, your files generated by GCC will not be fully ABI compatible.
On GNU/Linux systems use the GNU C Library version 2.2.5 or newer.
Use binutils 2.12.1 or any newer release.
Since GCC and glibc test for some features of binutils and glibc, you have to build and install new versions (if needed) in this order:
Especially, if you update binutils, you should rebuild glibc so that glibc can take advantage of some new options of binutils.
Since GCC now implements a written ABI that is also implemented by other compiler vendors, it might be that we encounter different interpretations of the ABI by the vendors, bugs in the ABI or bugs in the implementation of the ABI in different compilers.
We have tried hard to have a stable ABI that is compatible with future GCC releases. At this point no promise can be made that this release will be ABI compatible with all future GCC 3.x versions but we will strive hard to keep GCC 3.3 compatible with GCC 3.2.
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
These pages are maintained by the GCC team. Last modified 2022-10-26.