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.