5.2.3 Generic Linux Notes

This section describes aspects of building Connector/C++ applications that are specific to Linux. For general application-building information, see Section 5.1, “Building Connector/C++ Applications: General Considerations”.

Previously, generic Linux packages were built on the EL7 platform and on that platform GCC is configured to use an older ABI of libstdc++. Some of the symbols exported by the library include standard library types in their names, and consequently, are not compatible with the new CXX11 ABI, which is the default for modern GCC on most platforms (EL7 being an exception). So, unless you build your code on EL7, and use GCC6 or later compiler, it defaults to new CXX11 ABI and looks for Connector/C++ symbols that have new ABI names in them.

As of Connector/C++ 8.0.30, Connector/C++ uses the new CXX11 ABI. With this change, you might encounter following problems when using Connector/C++ installed from a generic Linux package:

  • An upgrade from Connector/C++ 8.0.29 (or earlier) to 8.0.30 (or later) could produce runtime errors after the upgrade, even if the previous version of Connector/C++ ran successfully.

  • It will not work with GCC5 or earlier, because the old compiler uses the old ABI and cannot link to code that uses new the ABI.

  • It will not work on EL6, EL7, or any other platform that modifies GCC settings to use the old ABI by default. However, in this situation a workaround is to build code under -D_GLIBCXX_USE_CXX11_ABI=1.

For a majority of platforms, including EL8, the GCC default was changed to the new ABI.