Совместимость бинарника со всеми Linux

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Совместимость бинарника со всеми Linux

Сообщение Sergei I. Gorelkin » 27.09.2023 23:30:53

В windows нет такого бардака. Там, если функция была в Win95, то она и в Win11 будет на том же месте. В Linux библиотеки .so имеют версии, и имена функций в них тоже могут иметь версии. Поэтому добиться, чтобы вызывалось именно то, что предполагается вызвать, несколько сложнее.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1397
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Совместимость бинарника со всеми Linux

Сообщение Alexx2000 » 28.09.2023 00:19:37

Да, в Linux с этим беда. В итоге приходится писать такие штуки:
Код: Выделить всё
const
  webplib = 'libwebp.so.%d';

var
  libwebp: TLibHandle;

procedure Initialize;
var
  Version: Integer;
  LibraryName: AnsiString;
begin
  for Version:= 7 downto 5 do
  begin
    LibraryName:= Format(webplib, [Version]);
    libwebp:= LoadLibrary(LibraryName);
    if (libwebp <> NilHandle) then Break;
  end;
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 487
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Совместимость бинарника со всеми Linux

Сообщение stikriz11 » 28.09.2023 12:14:44

Допустим, я купил программу. Потом купил новый комп. Поставил Linux поновее. И моя программа фсе? А если прекратилась поддержка, допустим, компания разорилась, то тоже кирдык? Как интересно... Вроде, люди боролись за свободу софта, а получилось как всегда.
stikriz11
постоялец
 
Сообщения: 114
Зарегистрирован: 04.09.2023 15:54:19

Re: Совместимость бинарника со всеми Linux

Сообщение Seenkao » 28.09.2023 12:28:13

stikriz11 писал(а):В Linux не слышали про позднее связывание? Ну, по имени найти метод и уже тога вызвать? В чем конкретно проблема so? Почему в windows dll можно вызвать от предыдущей версии, а Linux нет?

давно сделано. И в при новом обновлении Linux будет указатель на обновлённую библиотеку.
В большинстве случаев, всё будет нормально работать. И лишь в единичных случаях происходят сбои. И, если рапортуют об ошибке, то есть большая вероятность, что её исправят.

Я практически не видел на своём Linux проблем с запуском программ, кроме тех случаев, когда библиотеки совсем сырые, там можно хорошо ловить баги. Не ставьте сырые дистрибутивы и будет вам счастие.

stikriz11, панику только наводишь. Паникёр.

Добавлено спустя 2 минуты 17 секунд:
grot писал(а):Речь идет о статически-собранном бинарнике, у которого нет зависимистей на посторонние библиотеки !

когда речь идёт о таких вещах, то это ни как не относится ко всем приложениям, которые используют сторонние библиотеки. Как я и писал, в большинстве случаев всё нормально работает, если вы используете сторонние библиотеки.
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

Re: Совместимость бинарника со всеми Linux

Сообщение RRYTY » 28.09.2023 13:21:40

Seenkao писал(а):stikriz11, панику только наводишь. Паникёр.

Это не паника, это слезный плач. Предлагает поплакать вместе. :)

stikriz11 писал(а):если прекратилась поддержка ... то тоже кирдык?

Проект, от которого создатели отвернулись и прекратили поддержку, умирает. На любых ОСях так было, есть и будет. Разве что некий stikriz11, поняв глубину проблемы, наконец-то все исправит.
RRYTY
постоялец
 
Сообщения: 187
Зарегистрирован: 25.12.2021 10:00:32

Re: Совместимость бинарника со всеми Linux

Сообщение alexs » 28.09.2023 16:31:19

Из личной практики - важно учитывать разрядность
а в рамках одной разрядности обычно проблем нет
у меня для теста
AltLinux/Fedora/Cent/Debian/Ubuntu
Мои бинарники работаю корректно без перекомпиляции...
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Совместимость бинарника со всеми Linux

Сообщение haword » 29.09.2023 00:03:12

ну кстати насчет совместимости ) поставил недавно для тестов kylix 3 на 9 мандрейк, собрал на нем простенькую прогу, и попытался запустить на убунте 22.10. Конечно сразу не пошла, после танцев с бубнов для установки поддержки всех либ под 386 запустилась. Правда смотрелась ужасно из-за отсутствия сглаживания шрифтов. но запустилась.
основная проблема в линуксе, на чем может поломаться совместимость, это GUI либы. gtk2 gtk3 gtk4 gtk5 gtk6 gtk7 .... qt5 qt6 qt7 qt8 qt9 и так далее. чтобы запустилась программа надо чтобы стояли именной нужной версии библиотеки. в винде с этим проще. там вызовы GUI с винды 95 практически не менялся и простые проги собранные на 95 будут работать и в 11 винде.
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Re: Совместимость бинарника со всеми Linux

Сообщение stikriz11 » 29.09.2023 10:01:36

Это не паника, это слезный плач. Предлагает поплакать вместе. :)

Весь мой пост с вопросами. Я ничего не утверждал, а спрашивал. Но, красноглазику надо показать насколько он умнее всех. Я не понимаю, почему линуксоиды ощущают себя членом какой-то секты праведников? У них никогда нет проблем и все всегда хорошо. Как в анекдоте про 90 летнего старика, который три раза за день занимается сексом с женой. Надо видеть недостатки, чтобы из исправлять. Если не понимать что хорошо, а что плохо, не будет никакого развития.
stikriz11
постоялец
 
Сообщения: 114
Зарегистрирован: 04.09.2023 15:54:19

Re: Совместимость бинарника со всеми Linux

Сообщение alexs » 29.09.2023 10:50:30

Просто не верно приходить в новую ОС с практиками из другой. Особенно если это была windows. Там слишком много можно совершать глупостей.
Посмотрите какие возможности предоставляют менеджеры пакетов, что есть в стандарных репозитариях. Не надо тащить свои версии библиотек, подменяя штатные.
Правильно собранный инсталяционный пакет решит большую часть ваших проблем.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Совместимость бинарника со всеми Linux

Сообщение WAYFARER » 29.09.2023 11:52:02

grot писал(а):Хочу как в Windows , где :
32-bit EXE будет запускаться везьде , начиная с Windows-95 и заканчивая теми версиями, котрые еще даже не вышли.

Зачастую нет, не будет, если разработчик не позаботился об обратной совместимости. Старый софт в новых версиях Windows с большой долей вероятности запустится, а новый в старых нет.

stikriz11 писал(а): У них никогда нет проблем и все всегда хорошо.

Точно. Но и в обратную сторону работает точно так же. Посади линуксоида на Windows и у него точно так же возникнут проблемы как и пользователя Windows под Linux. И та, и другая ОС требует определенных знаний.

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

Никакого развития не будет если не учиться и развиваться. самому. А то получается по принципу - раз я не вдупляю как это работает, значит это сделано плохо.

Линукс кажется сложным? Так вы ещё не пробовали под MacOS софт писать, так что бы обеспечить совместимость между версиями.

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

Что касается красноглазия, то на мой взгляд все давно поменялось. Недавно обновили ноутбуки с женой, настройка ноутбука жены (Windows 10) заняла у меня половину дня. Установка Windows, установка драйверов, установка софта, настройка. Завести старый принтер был целый квест. Без гугла я бы не справился.
А теперь мой линукс. Установка дистрибутива в пару нажатий - 5 минут, установка необходимого софта из магазина приложений - 5 минут, 5 минут на копирование данных из домашнего каталога старой машины. Все. 15 минут и машина готова к работе. И все это не требует вообще никаких знаний и умений.
Это с точки зрения обычного пользователя. Но я же разработчик. Полчаса я потратил на установку и настройку инструментов разработки (несколько версий php,Xdebug, apache, mysql, postgresql, NetBeans, git, fpc и Lazarus), не знаю как сейчас, но 10 лет назад поднять это все на Windows и заставить работать как надо - вот где красноглазие.

А теперь пару слов по теме.
grot писал(а):Речь идет о статически-собранном бинарнике, у которого нет зависимистей на посторонние библиотеки !

В Linux так не делается. И здесь действительно придется разбираться как это работает и выбирать правильное решение.
Самое правильное, собрать установочный пакет, у которого в зависимостях будут все необходимые библиотеки. Если используются какие то специфичны библиотеки или старые версии библиотек, то здесь есть несколько простых путей.
1. Положить необходимые библиотеки в пакет, устанавливать в /opt и запускать со своими библиотеками.
2. AppImage - https://ru.wikipedia.org/wiki/AppImage
3. Использовать snap или flatpack
https://ru.wikipedia.org/wiki/Snappy_(% ... 0%BC%D0%B8)
https://ru.wikipedia.org/wiki/Flatpak
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 520
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Совместимость бинарника со всеми Linux

Сообщение Снег Север » 29.09.2023 12:06:05

WAYFARER писал(а):Что касается красноглазия, то на мой взгляд все давно поменялось. Недавно обновили ноутбуки с женой, настройка ноутбука жены (Windows 10) заняла у меня половину дня. Установка Windows, установка драйверов, установка софта, настройка. Завести старый принтер был целый квест. Без гугла я бы не справился.
А теперь мой линукс. Установка дистрибутива в пару нажатий - 5 минут, установка необходимого софта из магазина приложений - 5 минут, 5 минут на копирование данных из домашнего каталога старой машины. Все. 15 минут и машина готова к работе. И все это не требует вообще никаких знаний и умений.


В точности по анекдоту - " - Но вот сосед рассказывает... - И вы тоже рассказывайте."
Хотя, должен признать, что установка некоторых линухов, позиционированных для "домашнего пользования", последние несколько лет стала дружелюбнее. Но "шаг вправо, шаг влево" и приходится переустанавливать с нуля. С виндой такого не случается со времен ХР. Всегда можно, как минимум, откатиться на предыдущую точку сохранения.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2997
Зарегистрирован: 27.11.2007 16:14:47

Re: Совместимость бинарника со всеми Linux

Сообщение stikriz11 » 29.09.2023 12:25:24

У нас нет выбора - придется идти в линукс. Эту задачу ставит время. По крайней мере, пока не будет настоящей нашей операционки. И мнение людей с опытом в других операционках полезно не отметать сразу, а разбираться. Возможно, что оно правильное. Вот, инсталлятор в винде значительно лучше, чем пакеты в линуксе. А то что надо изучать никто не спорит. Вопрос, а зачем специально сделано, чтобы много надо было изучать? Ну, черный экран как в дос и какие-то команды, которые только сейчас, а потом никогда больше не нужны будут? Я понимаю, тут нет разработчиков линукс, поэтому вопрос риторический. Надеюсь, я такой херни в своих программах под линукс делать не буду. Ну, очень постараюсь.
stikriz11
постоялец
 
Сообщения: 114
Зарегистрирован: 04.09.2023 15:54:19

Re: Совместимость бинарника со всеми Linux

Сообщение WAYFARER » 29.09.2023 13:14:49

Снег Север писал(а): Но "шаг вправо, шаг влево" и приходится переустанавливать с нуля.

Не уверен что знаю как можно так шагнуть влево или вправо что бы уронить систему. Единственное что мне удавалось сделать это уронить наглухо графическую подсистему установкой устаревшего драйвера для старой карточки nvidia (но я знал заранее чем это может обернуться). Но тоже вполне восстановимо (в безопасном режиме удалил драйвер и переустановил иксы).
Справедливости ради стоит отметить что тоже самое происходило и в Windows (и восстанавливалось примерно так же - безопасный режим и удаление кривого драйвера).
И один раз сломал систему пакетов так, что починить не смог, это случилось при установке Linux версии 1C (Здесь привет криворуким разработчикам и мне самому, потому что не смотрел версии пакетов).
Так что не знаю куда вы там влево и вправо шагаете)).
Работа ведется под юзером с ограниченными правами, сломать что то случайно не получится. Если же ты под рутом лезешь куда не знаешь и совершаешь какие то действия, которых до конца не понимаешь, то кто тут виноват? И виндовс таким образом поломать ничуть не сложнее чем линукс, например удалить какой нибудь нужный системный файл, установить несовместимый драйвер/софт.

А что касается дружелюбности, то не могу говорить за все дистрибутивы, пользуюсь Ubuntu. С точки зрения обычного юзера там все выглядит и работает примерно как в MacOS или смартфоне на Android или iOS, все делается в пару кликов без необходимости что либо знать и думать и без возможности что либо сломать.
В современных версиях Windows (если не брать в расчет процесс установки и настройки, который нифига ни юзерфрендли) все примерно так же.

Снег Север писал(а): Всегда можно, как минимум, откатиться на предыдущую точку сохранения.

Точки восстановления в виндовс это круто, но не круто когда ими приходится пользоваться.
Собственно в Linux, тоже есть подобные средства, но используются в основном на серверах и их использование требует некоторых продвинутых навыков, но зато сверхнадежны.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 520
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Совместимость бинарника со всеми Linux

Сообщение stikriz11 » 29.09.2023 13:21:38

удалить какой нибудь нужный системный файл, установить несовместимый драйвер/софт.

В винде это невозможно сделать кроме софта. Софт просто не будет работать
Так сколько раз? :D
stikriz11
постоялец
 
Сообщения: 114
Зарегистрирован: 04.09.2023 15:54:19

Re: Совместимость бинарника со всеми Linux

Сообщение WAYFARER » 29.09.2023 14:41:48

stikriz11 писал(а):В винде это невозможно сделать кроме софта. Софт просто не будет работать

Вообще легко. Не далее чем несколько дней назад драйвера принтера привела к синему экрану и перезагрузке. Пришлось откатываться.
Уронить винду очень легко на самом деле. Существует миллион способов это сделать. Любое неосторожное действие и привет. Да что там говорить, если даже некоторые обновления ее роняют.


stikriz11 писал(а):Вот, инсталлятор в винде значительно лучше, чем пакеты в линуксе.

В корне не верный взгляд. Ни что из этого не лучше. И не хуже.
И решения похожие на инсталляторы в виндовс тоже есть и активно используются там где надо.
Никто не мешает их использовать. Подавляющее большинство проприетарного софта для Linux именно так и распространяется.

stikriz11 писал(а):Вопрос, а зачем специально сделано, чтобы много надо было изучать?

Если мне кто то скажет что для разработки под Windows надо изучить меньше, то я скажу что этот человек не знает о чем говорит.
И весь его софт - что то чуть сложнее Hello World.

И надо помнить, что в отличии от Windows, Linux это всего лишь ядро. И на этом ядре существует множество дистрибутивов, которые отличаются между собой и версией этого ядра, и версиями утилит, программ и библиотек, графическим сервером, средой рабочего стола и т.д. и .т.п.
Говоря простым языком это чертова куча разных ОС.
Собственно мы не делаем софт для Linux, мы делаем софт для Ubuntu, RHEL, Debian и прочих.
А ежели вам придется делать софт для отечественных дистрибутивов, то поздравляю, там разработчики с таким же как у вас подходом, скучно не будет)
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 520
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Пред.След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

Рейтинг@Mail.ru