Linux - бинарная совместимость
-static?
Может компилятор глючит?
так что дефолтовое поведение явно отличается.
-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
в теории, это та же бинарная несовместимость.
да вообще статик это идеологически неверно — получится консерва со всеми багами либ.
идеологически — да, но это удобно, если надо бинарный пакет быстро установить на NN машинах.
тогда ещё проще Контейнер раскидать прямо со своей системой =)
ну у нас N новых говноутилит в неделю с новыми зависимостями
Общий вопрос заключается в том, как определить априори, являются лиЕсть подозрение, что ты сейчас компилируешь проприетарщину галимую, которую хочешь поставлять бинарями. Иначе говоря, почему бы не дать исходники, пусть сами компилируют.
два дистрибутива линукс для одной и той же платформы бинарно совместимыми.
По делу, не надо хотеть сделать бинарно совместимыми Редхат и Дебиан. Тебе очень повезло, что твоя прога вылетела сразу, а не после того как ты уже её установил. Собирай rpm и deb, для даждой версии ОС, также поставляй исходники для тех, кто захочет пересобрать, если это возможно.
Ну или пускай запускает на БСД
Ну или пускай запускает на БСДМожет там по лицензионному соглашению можно запускать только под Линуксом, и только одну копию, и нельзя копировать бинарь.
"Только под линуксом" - это противоречит законодательству РФ %)
однако abby недавно про лингву такое говорила.
правда, это с лора
http://www.linux.org.ru/view-message.jsp?msgid=2632405a>
1. Неконструктивная часть.
Проблема вызвана какими-то ошибками в системе.
На самом деле бинарники должны работать на rhel и на debian.
2. Конструктивная часть.
Необходимо собирать бинарники независимо для каждой системы.
2. Конструктивная часть.Нет, не так. Для каждой системы следует собирать _бинарный_пакет_ (rpm,deb кторый проверит наличие нужных либ, разложит файлы по файловой системе и выполнит последующую настройку, если это необходимо. Нечего тащить помойку из виндов, поставляя только бинарник: ни один вменяемый админ ЭТО ставить не будет.
Необходимо собирать бинарники независимо для каждой системы.
есть мнение, что админу намного интереснее собрать что-то там из исходников, чем поставить бинари.
Ну есть LSB, а также в инете можно надыбать некоторые руководства, как собирать конформный пакет, обходя известные грабли. Только этот путь почему-то непопулярен.
есть мнение, что админу достаточно подписанных бинарников.
Для разминки найди мне, пожалуйста, cyrus-imapd23 с включенной репликацией в бинарном виде (речь о FreeBSD).
Хорош флудить. То, что FreeBSD не канает как чисто бинарный дистрибутив - известный факт.
ну или какой-либо другой, который ты будешь считать "чито бинарным дистрибутивом".
Учти, что мне потом вдруг понадобится совместимость с ucd-snmp, а может, и с net-snmp.
Подобным вопросам уже все кости .
Оставить комментарий
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 или доказать, что это невозможно.