Если ваш код действительно работает и не умирает до вызова main (), было бы полезно поместить в ваш код некоторые отладочные выходные операторы, чтобы точно знать, где происходит сбой вашего кода.
Чтобы сделать ваш исполняемый файлнасколько это возможно, вы захотите сделать статическую связь.Таким образом, у него не будет много внешних зависимостей.Конечно, размер исполняемого файла немного увеличится.Если это все еще не работает, убедитесь, что архитектура, которую вы компилируете, такая же, как и у кластера.То есть на кластере работают 64-битные процессоры Intel?Или, может быть, это sparc или что-то еще?
Даже при статической компиляции вы не полностью переносимы.Вам повезет больше, если вы сможете выяснить, какая версия glibc работает в кластере, и построить свое приложение на этом.Вам будет еще безопаснее, если вы сможете создать свое приложение с той же версией gcc, что и в кластере.По сути, вы хотите, чтобы ваш набор инструментов был как можно ближе к кластерным системам.
ОБНОВЛЕНИЕ: Итак, ваша проблема почти наверняка - glibc, с которым вы компилируете, слишком нов, чтобы запустить ядро 2.4.Это не удивительно.Это можно исправить, выполнив то, что я сказал в предыдущем абзаце, но возможно сделать это только с помощью флагов компилятора.Я нашел этот вопрос , в котором говорится о опции --enable-kernel=VERSION
для gcc.Однако у меня нулевой опыт использования этой опции.