Насколько переносимы бинарники в Ubuntu?

Название говорит само за себя. Но позвольте мне задать вопрос:

Предполагая, что я должен был скомпилировать приложение, использующее libffi, libGL, dlfcn и SDL, будет ли двоичный запуск выполняться в других дистрибутивах Linux с такой же архитектурой и т. Д.?

[ 113] Причина, по которой я спрашиваю, связана с каталогом /usr/lib/i386-linux-gnu - я могу ошибаться, но я предполагаю, что этот каталог скорее относится к Ubuntu, нет?

Итак, насколько переносимы двоичные файлы, скомпилированные в Ubuntu? ?

5
задан 16 October 2011 в 01:38

2 ответа

Когда Вы компилируете двоичный файл, скажем, nginx от исходного кода это создается с информацией относительно того, какие версии библиотек находятся в системе, которая компилирует двоичные файлы. Библиотеки к ссылке, конечно, определяются аргументами (для nginx, это - определение, которых модулей Вы хотите активированный или не). Но тот двоичный файл, который Вы создали, будет (вряд ли) работать на отдельной системе, если тождественно настроенная система.

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

Примечание: В то время как Вы можете получить двоичный файл к порту к другой системе Linux, его опрометчивому и обычно являетесь трудоемкими. Это вызвано тем, что:
(1) Необходимо удостовериться система, которую Вы собираетесь переместить, Ваш двоичный файл к использует ту же версию libc это использовалось для компиляции двоичных файлов
(2) Необходимо удостовериться, что библиотеки, пользовавшиеся в рамках программы, могут быть обнаруженными легко в системе, и что они - то же (или совместимый) версии, как использовались для создания программы.

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

11
ответ дан 16 October 2011 в 01:38

В общем, да, но это зависит. Библиотеки иногда добавляют новые функции. Если вы начнете использовать эти новые функции, то теперь вы зависите от этой версии библиотеки (поскольку в старых версиях ее не было). Пока в системе есть нужные вам библиотеки, по крайней мере, с минимальными версиями, которые вам требуются (и с той же архитектурой), программа будет работать нормально.

Если вы упаковываете программу, в системе пакетов Debian есть средства, позволяющие определить, какие функции вы вызываете в библиотеках, и определить минимальную версию, которая вам требуется, чтобы пакет мог указать эту информацию, чтобы люди могли установить ее в Debian. на основе системы, он может убедиться, что у них есть необходимые библиотеки. Следуя этой процедуре, как правило, можно создать .deb в Ubuntu, который будет устанавливать и запускать, скажем, debian и mint, и любой выпуск, соответствующий вашим минимальным библиотечным требованиям.

См. http://www.debian.org/doc/debian-policy/ch-sharedlibs.html

.
0
ответ дан 16 October 2011 в 01:38

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

Похожие вопросы: