Linux - бинарная совместимость

Zusk

Общий вопрос заключается в том, как определить априори, являются ли
два дистрибутива линукс для одной и той же платформы бинарно совместимыми.
Суть проблемы в следующем. Имеется программа,
Используя g++ без ключей, собираем ее на rhel5-amd64,
запускаем бинарник на rhel5-amd64 (там же) - OK,
запускаем бинарник на debian-amd64 - Floating point exception
Бинарник, собранный на на debian-amd64, работает на обеих системах.
ldd на обеих системах проходит нормально:
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003f38e00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003f3d200000)
libm.so.6 => /lib64/libm.so.6 (0x0000003f38600000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003f3ce00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003f38200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003f37e00000)
В чем может быть проблема? Куда смотреть? Нужо, чтобы бинарник, собранный
на rhel5-amd64, работал на debian-amd64 или доказать, что это невозможно.

dgaf

-static?

tokuchu

Может компилятор глючит?

vall

у редхата куча своих патчей, в том числе и на gcc.
так что дефолтовое поведение явно отличается.

slonishka

-static?
там бессмысленные ворнинги могут пойти (ну если подобные функции используются) в стиле:
  In function `dlfcn_load': (.text+0x6d6):
warning: Using 'dlopen' in statically linked applications requires
at runtime the shared libraries from the glibc version used for
linking

в теории, это та же бинарная несовместимость.

vall

да вообще статик это идеологически неверно — получится консерва со всеми багами либ.

slonishka

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

vall

тогда ещё проще Контейнер раскидать прямо со своей системой =)

slonishka

ну у нас N новых говноутилит в неделю с новыми зависимостями

Werdna

Общий вопрос заключается в том, как определить априори, являются ли
два дистрибутива линукс для одной и той же платформы бинарно совместимыми.
Есть подозрение, что ты сейчас компилируешь проприетарщину галимую, которую хочешь поставлять бинарями. Иначе говоря, почему бы не дать исходники, пусть сами компилируют. :)
По делу, не надо хотеть сделать бинарно совместимыми Редхат и Дебиан. Тебе очень повезло, что твоя прога вылетела сразу, а не после того как ты уже её установил. Собирай rpm и deb, для даждой версии ОС, также поставляй исходники для тех, кто захочет пересобрать, если это возможно.

hoha32

Ну или пускай запускает на БСД :grin:

Werdna

Ну или пускай запускает на БСД :grin:
Может там по лицензионному соглашению можно запускать только под Линуксом, и только одну копию, и нельзя копировать бинарь. :)

hoha32

"Только под линуксом" - это противоречит законодательству РФ %)

dgaf

>"Только под линуксом" - это противоречит законодательству РФ %)
однако abby недавно про лингву такое говорила.
правда, это с лора
http://www.linux.org.ru/view-message.jsp?msgid=2632405a>

Zusk

Подведем итог работы коллективного разума.
1. Неконструктивная часть.
Проблема вызвана какими-то ошибками в системе.
На самом деле бинарники должны работать на rhel и на debian.
2. Конструктивная часть.
Необходимо собирать бинарники независимо для каждой системы.

BondarAndrey

2. Конструктивная часть.
Необходимо собирать бинарники независимо для каждой системы.
Нет, не так. Для каждой системы следует собирать _бинарный_пакет_ (rpm,deb кторый проверит наличие нужных либ, разложит файлы по файловой системе и выполнит последующую настройку, если это необходимо. Нечего тащить помойку из виндов, поставляя только бинарник: ни один вменяемый админ ЭТО ставить не будет.

AlexV769

есть мнение, что админу намного интереснее собрать что-то там из исходников, чем поставить бинари.

Marinavo_0507

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

shlyumper

есть мнение, что админу достаточно подписанных бинарников.

AlexV769

Достаточно, если они есть.
Для разминки найди мне, пожалуйста, cyrus-imapd23 с включенной репликацией в бинарном виде (речь о FreeBSD).

shlyumper

Хорош флудить. То, что FreeBSD не канает как чисто бинарный дистрибутив - известный факт.

AlexV769

тот же вопрос про твой любимый дистрибутив GNU/Linux
ну или какой-либо другой, который ты будешь считать "чито бинарным дистрибутивом".
Учти, что мне потом вдруг понадобится совместимость с ucd-snmp, а может, и с net-snmp.

shlyumper

Подобным вопросам уже все кости .
Оставить комментарий
Имя или ник:
Комментарий: