Note: all this work is being done on a closed network (i.e. no internet access).
I am being bitten by the GCC 5.0+ STL changes that occurred. It has been stated is other posts that starting in GCC 5.0 the Standard Template Libraries went through an update where there is now legacy stl and strict compliance stl. Code built with _GLIBCXX_USE_CXX11_ABI 1 does not link with code built with _GLIBCXX_USE_CXX11_ABI 0. A setting of 0 denotes legacy stl (i.e. std::string), whereas set to 1 constructs std::__cxx11::string.
OK fine that can be worked with if all user code is rebuilt to match the new libraries, but what if the debian packages are not built the same??? Now what?
Case in point, upgraded a Debian 8.11 (Jessie) system to 10.3 (Buster), included in the upgrade was Boost and Protobuf. Now build my software using the default _GLIBCXX_USE_CXX11_ABI 1 and get link errors with Protobuf because it appears Protobuf was built with either pre-gcc 5.0 or ABI set to 0. Boost has other issues that it cannot find some std::__cxx1112::string (saw this once) or just std::string.
Downloaded the source for Boost, transferred to closed network, and built using ABI 1, my code now links to boost but still fails the link to protobuf. Built Boost and my code with ABI 0, now link is successful with both.
Still in the process of getting a new mirror of Buster to determine if that will resolve, however the version I do have has mismatched libraries (incompatible)
This is just a warning that not all may be as it seems.
Boost went from 1_55 to 1_67, protobuf 9 to 17, gcc 4.8 to 8. Furthermore as of the writing of this post Glassfish is not compatible with the Buster version of JDK.