The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск игры Free Heroes of Might and Magic II (fheroes2) - 0.9.15"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Доступны два режима работы форума: "Раскрыть нити" и "Свернуть нити".
. "Выпуск игры Free Heroes of Might and Magic II (fheroes2) - 0..." +/
Сообщение от Zenitur (ok), 14-Май-22, 11:27 
Смотри. Тут такой прикол. Вот есть системная библиотека под названием 'libc.so.6'. Это Glibc.

RHEL 4 - GLIBC 2.3
RHEL 5 - GLIBC 2.5 (но всё равно все бинарники, собранные с ним, зависят максимум от GLIBC 2.4)
RHEL 6 - GLIBC 2.12
RHEL 7 - GLIBC 2.17

Прикол в том, что нельзя скачать библиотеки с GLIBC более новой версии, а потом подсунуть их для тех программ, которые ругаются "GLIBC 2.17 не найден в вашей системе!". Ты выполняешь команду 'export LD_LIBRARY_PATH=/home/username/new_glibc_libs:$LD_LIBRARY_PATH', но толку нет, программа всё равно выдаёт ту же самую ошибку.

Есть два выхода:

1. Обновлять Glibc непосредственно в системе. В идеале - скомпилировать пакет для конкретной версии системы
2. Воспользоваться утилитой patchelf. Пропатчить бинарник, который ты собираешься исполнять. Заставить бинарник вызывать другую версию библиотеки 'ld-linux-x86-64.so.2' - не ту, которая в систему установлена, а ту, которая находится в '/home/username/new_glibc_libs'

Например я пытался запустить Opera 12.16 в RHEL 5. Упс - а опера зависит от GLIBC 2.8 или более новой версиси. Я попробовал более старые версии - последней версией, слинкованной с более старым GLIBC, оказалась 11.52. Кажется, так.

Однако при помощи patchelf я пропатчил исполняемый файл оперы, и запустил 12.16 в RHEL 5 успешно.

Я потом попробовал провернуть то же самое со Steam для Linux, но потерпел неудачу.

Вот, а с остальными библиотеками всё гораздо-гораздо проще. Вот скажем, libSDL и libOpenAL. Можно просто распространять их вместе с дистрибутивом игры. Ты видел, как я это сделал в своей сборке fheroes2. Я подсмотрел это решение в играх, версии для Linux которых делал Icculus. Например в Doom3 1.3.1 в версии для Linux он положил в дистрибутив игры - библиотеки 'libgcc_s.so.1' и 'libstdc++.so.6'. В дистрибутив игры 'World of Goo' - библиотеки SDL 1.2. В дистрибутив игры Braid - libCg.

Но не только Icculus так делает. Многие другие разработчики игр так делают, например в игре Trine, портированной Linux Game Publishing (бывш. Loki Games, в которой Icculus раньше работал) рядом с исполняемым файлом игры лежит libphysx. Понятное дело, что в системе у пользователя такой библиотеки не может быть установлено. Поэтому разработчики игры распространяют библиотеку вместе с игрой. Но так можно делать и с библиотеками, которые, как правило, в системе у пользователя установлены. Просто установлены не у всех, или у кого-то они могут быть слишком старыми

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск игры Free Heroes of Might and Magic II (fheroes2) - 0.9.15, opennews, 09-Май-22, 18:19  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру