LINUX.ORG.RU

Бинарники


0

0

Здравствуйте. Я новичок в Linux. Слышал, что скомпилированная из исходников на одном компьютере с Linux программа может не работать на другом (с другим дистрибутивом или версией). Почему? Я знаю, что такое двоичная совместимость, но не понимаю, почему её нет в Linux.


4.2 может не работать из-за архитектуры и необходимых библиотек.

Also, толсто :]

Deleted
()

Вполне себе может работать.

Вопрос лишь в наличие нужных версий динамический библиотек.

А вообще дистрибутивы ОС на безе linux, порой настолько отличаются друг от друга, что их можно считать разными ОС.

Nesk
()

Бери программы из официального репозитария своего дистрибутива.

Тогда, скорее всего, всё будет работать.

sin_a ★★★★★
()

Спасибо за ответы. Но тогда почему, если бинарники работают, компиляцией программ каждый разработчик дистрибутивов (насколько я знаю) занимается сам? Не проще было бы тогда собрать единый репозиторий что-ли бинарников (скомпилированных для каждой архитектуры), а нужные динамические библиотеки устанавливать, как сейчас, по зависимостям в пакетах? Наверное меньше возни было бы разработчикам дистрибутивов.

Я не троллю, просто интересно...

O_o
() автор топика
Ответ на: комментарий от O_o

>а нужные динамические библиотеки устанавливать, как сейчас, по зависимостям в пакетах?

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

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

Если хочешь геморроя - уже сейчас есть alien.

nu11 ★★★★★
()
Ответ на: комментарий от O_o

Компилируют с различными параметрами, под различные архитектуры, накладывают свои патчи и тд.

msdinit
()

> Я знаю, что такое двоичная совместимость, но не понимаю, почему её нет в Linux.

Тут она и не нужна, по большому счету. Разве что для коммерческого софта (а-ля Nero).

Igron ★★★★★
()

Спасибо.

O_o
() автор топика
Ответ на: комментарий от nu11

>для этого нужно, чтобы

> 1) пакеты с бинарниками были в едином формате

tar.gz/bz2/lzma поймут везде. RPM поймут почти везде (хотя иногда через задницу в виде Alien или portage). DEB прикрутить не проблема.

> 2) названия пакетов с библиотеками были одинаковы во всех дистрах

Почти есть.

> 3) во всех дистрах был установщик для этого универсального формата.

Написать скрипт для поддержки сторонних форматов — работа нескольких часов. (Отладить его — месяцев, но это детали.)

Всё упирается в разные версии библиотек. Если основные, вроде libc много лет стабильны и практически не меняются, то у менее употребляемых может быть несколько несовместимых версий. Поэтому нужны разные сборки программ даже под разные версии одного дистрибутива. Эту проблему часто решают, собирая программу статически. Размер увеличивается, зато работать будет везде.

question4 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.