О бинарной совместимости Linux

Если я получу некоторый код C ++, созданный, скажем, GCC 4.8 в Ubuntu, код не имеет GUI / интерфейса, только вызывает стандартные библиотеки Linux, то сможет ли двоичный файл работать на RHEL 5/6, с гораздо более старой версией GCC?

4

Решение

Обычно это не так. Он будет жаловаться на то, что libc слишком стар, например.

Если вы статически связываетесь с libstdc ++ и тщательно избегаете новых возможностей glibc, вам, возможно, удастся сойти с рук. Последнее не всегда возможно, хотя. Статическое связывание с libc официально не поддерживается и может работать или не работать для вас.

4

Другие решения

Проблема, вероятно, больше Glibc чем libstdc++ (который вы действительно можете связать статически) или сам GCC.

Вы можете использовать альтернативный Libc, такой как MUSL libc (который должен быть более дружественным со статическим связыванием)

Кроме того, могут быть некоторые зависимости ядра.

2