GCC отлично подходит для совместимости с ABI, если вы используете тот же стандарт C++ [1].
Но мне кажется, что если разделяемая библиотека, скомпилированная GCC 4.3 в режиме C++03, предоставляет, скажем, std::string
, это будет другой std::string
, чем тот, который понимается исполняемым файлом, скомпилированным GCC 4.8 в режиме C++11. .
Причина, по которой я спрашиваю, заключается в том, что я планирую развернуть программу, скомпилированную GCC 4.8 в режиме C++ 11, на CentOS 6, чей максимальный упакованный GCC составляет 4.3... и некоторые общие библиотеки (будь то сторонние библиотеки C++ или более вещей системного уровня), предположительно, поэтому все они будут С++ 03. Но если бы это было так, мы бы никогда не смогли развернуть какие-либо программы на C++11 в старых дистрибутивах Linux, что кажется маловероятным.
Я наивно думаю, что здесь может быть проблема? И, если есть, как я могу решить это?
-std=c++11
не используется по умолчанию даже в GCC 4.8, не означает ли это, что приложение C++11 не будет работать из коробки и в CentOS 7?? - person Lightness Races in Orbit   schedule 04.08.2016