Сначала я хочу заявить, что этот вопрос связан со школой/домашним заданием.Совместимость объектного файла C между компьютерами
Предположим, что компьютеры CP1 и CP2 используют одну и ту же операционную систему и машинный язык. Если на CP1 скомпилирована программа C, чтобы переместить ее на CP2, необходимо перенести исходный код и перекомпилировать на CP2 или просто перенести объектные файлы.
Мой ответ кишки состоит в том, что объектные файлы должны быть достаточными. Код C преобразуется в сборку компилятором и собирается ассемблером в машинный код. Поскольку архитектура имеет один и тот же машинный код и операционную систему, я не вижу проблемы.
Но чем больше я думаю об этом, тем больше смущения я начинаю получать.
Мои вопросы:
а) С его ссылкой на объектные файлы и не исполняемые, я предполагаю, что там не было никаких ссылок. Будут ли какие-либо проблемы, возникающие при соединении с CP2?
b) Имеет ли значение, если код использовал стандарт C11 для CP1, но единственным компилятором на CP2 был C99? Я предполагаю, что это не имеет значения, если код был скомпилирован/собран.
c) В вопросе не указаны общие/динамически связанные библиотеки. Таким образом, это будет работать только в том случае, если программа не имеет зависимости от файлов .dll/.so/.dylib, иначе они также потребуются на CP2.
Я чувствую, что есть так много ошибок, и, учитывая, насколько неопределен вопрос, я теперь чувствую, что было бы безопаснее просто перекомпилировать.
Halp!
distcc, который копирует объектные файлы между компьютерами, рекомендует использовать ту же самую версию компилятора на всех узлах, даже для языка C. – aschepler