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