% gcc -o foo foo.c -static
Полученный двоичный файл должен работать на большинстве дистрибутивов, учитывая, что он работает на той же архитектуре (64-битная, 32-битная, arm, mips и т. Д.).
главное: вы не знаетето, что можно найти в целевых системах заранее, вы должны объединить все, что можете, либо в бинарный файл, который вы отправляете, либо в какую-то «хромированную» среду, где вы также развертываете внешние библиотеки (вещи, которые не могут быть связаны статически)) и затем иметь какую-то оболочку для использования развернутых библиотек вместо системных библиотек.