The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск игры Free Heroes of Might and Magic II (fheroes2) - 0..."
Отправлено Zenitur, 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. Понятное дело, что в системе у пользователя такой библиотеки не может быть установлено. Поэтому разработчики игры распространяют библиотеку вместе с игрой. Но так можно делать и с библиотеками, которые, как правило, в системе у пользователя установлены. Просто установлены не у всех, или у кого-то они могут быть слишком старыми

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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