Обычно лучше компилировать на той же машине, на которой вы хотите выполнить?

(Примечание: я просто использую ffmpeg в качестве примера я часто удивляюсь тому же с другими программами)

У меня есть скрипт сборки для ffmpeg который компилирует поддержку нескольких нестандартных функций. Теперь я хочу использовать этот кодер на нескольких других машинах. Можно ли просто скопировать /usr/local/bin/ffmpeg Исполняемый файл, или я предпочитаю запускать скрипт сборки на других машинах?

  • Есть ли вероятность компиляции в зависимости от аппаратного обеспечения?
  • Можно ли иметь какие-либо скрытые зависимости, которые мне также нужно скопировать, кроме самого исполняемого файла и всего, что я могу найти с ldd?

1 ответ

Решение

Да и да:)

если вы хотите, чтобы ваш скомпилированный двоичный файл выполнялся на нескольких машинах, вы должны скомпилировать его так, чтобы он соответствовал архитектуре и настройке (в отношении библиотек) на этих машинах. это обычно означает:

  • связать все, что вы можете статически
  • поставьте libs ваши двоичные потребности
  • 32-битные вещи работают на 64-битных машинах, но не наоборот

поэтому, если вы не хотите думать о том, может ли он работать или нет, скомпилируйте и связайте двоичный файл с машиной, на которой вы хотите его запустить.

Другие вопросы по тегам