This section describes aspects of building Connector/C++ applications that are specific to Linux. Generic Linux packages do not contain Connector/C++ static libraries. For general application-building information, see Section 5.1, “Building Connector/C++ Applications: General Considerations”.
Connector/C++ 8.0.32 provides generic Linux packages for ARM architecture (64 bit). All Connector/C++ versions provide generic Linux packages for Intel architecture (both 32 and 64 bits).
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.