tx00100xt / SeriousSamClassic-VK

Open source game engine version developed by Croteam for Serious Sam Classic with Vulkan support (Windows, Linux, FreeBSD, OpenBSD, macOS, Raspberry Pi OS). Based on https://github.com/sultim-t/Serious-Engine-Vk and linux port https://github.com/icculus/Serious-Engine
GNU General Public License v2.0
101 stars 12 forks source link

libEngine.so: undefined symbol: inflate #30

Open SopaDeMacaco-UmaDelicia opened 8 months ago

SopaDeMacaco-UmaDelicia commented 8 months ago

После обновления до версии 1.10.6 из AUR сэм отказывается запускаться. Терминал выдаёт serioussam: symbol lookup error: /usr/lib/libEngine.so: undefined symbol: inflate До этого стояла июньская версия и всё работало отлично.

tx00100xt commented 8 months ago

inflate

Функция относиться к библиотеке zlib, https://github.com/madler/zlib/blob/ac8f12c97d1afd9bafa9c710f827d40a407d3266/inflate.c#L590 которая используется в libEngine.so для распаковки gro файлов схатых в формате zip. https://github.com/tx00100xt/SeriousSamClassic-VK/blob/70c4bbeb424c9809fba80c57d2d2b9e89680ceeb/SamTFE/Sources/Engine/Base/Unzip.cpp#L796

Для начала стоит переустановить zlib. Проверить наличие всех файлов.

└── usr ├── include │   ├── zconf.h │   └── zlib.h ├── lib │   ├── libz.a │   ├── libz.so -> libz.so.1.3 │   ├── libz.so.1 -> libz.so.1.3 │   ├── libz.so.1.3 │   └── pkgconfig │   └── zlib.pc └── share ├── licenses │   └── zlib │   └── LICENSE └── man └── man3 └── zlib.3.gz

10 directories, 9 files

После этого попробовать собрать Serious Sam.

SopaDeMacaco-UmaDelicia commented 8 months ago

zlib на месте, переустановил, пересобрал сэма, ничего не изменилось, вот ещё лог сборки https://pastebin.com/LWEqGKYV

tx00100xt commented 8 months ago

Лог сборки нормальный.

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

Буквально два дня назад собирал под Arch Linux на виртуалке версию 1.10.6 и всё работало. Игра запускалась. Работали обе версии OpenGL и Vulкат. Но есть одно но, я не обновлял свой Arch на виртуалке несколько месяцев. Версия zlib 1.3 вышла в августе, возможно они что-то намудрили. Обновлю систему и посмотрю что к чему.

А пока есть временное решение. Движок может использовать внешнюю библиотеку zlib, а так же внутреннюю. Код zlib включен в исходники движка, и достаточно поменять лишь один параметр для сборки со встроенной zlib.

https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTFE/Sources/CMakeLists.txt#L13 https://github.com/tx00100xt/SeriousSamClassic-VK/blob/main/SamTSE/Sources/CMakeLists.txt#L13

Нужно параметр On перевести на OFF

Для этого в PKGBUILD нудно сразу после prepare() вставить строчки:

prepare(){
  # Build with internal zlib
  cd "$srcdir/$_srcname"
  find . -name "CMakeLists.txt" -exec sed -i 's/zlib development files" On/zlib development files" OFF/g' {} +

  # Making building TFE scripts.
  cd "$srcdir/$_srcname/SamTFE/Sources/"

Сейчас собрал у себя на генту со встроенным zlib. Тоже работает нормально.

Запустил сборку с внешним zlib на виртуалке с Arch. Версия zlib тоже 1.3

-- Found SDL2: /usr/lib/libSDL2main.a;/usr/lib/libSDL2.so
-- Found ZLIB: /usr/lib/libz.so (found version "1.3")
->- Found Vulkan: /lib/libvulkan.so

Значит последнее обновление делал в конце августа начале сентября. Всё работает и с внешним zlib. Снимок экрана в 2023-10-19 19-42-27 В любом случае только после обновления системы всё станет ясно

tx00100xt commented 8 months ago

И еще. вот предыдущая версия с aur https://aur.archlinux.org/cgit/aur.git/snapshot/aur-aa676baa24a5404fbe914ec85a84f258b21332e2.tar.gz Будет ли она нормально работать?

SopaDeMacaco-UmaDelicia commented 8 months ago

И еще. вот предыдущая версия с aur https://aur.archlinux.org/cgit/aur.git/snapshot/aur-aa676baa24a5404fbe914ec85a84f258b21332e2.tar.gz Будет ли она нормально работать?

Попробовал, тоже самое. Как я говорил, прошлая версия была версия скомпилирована в июне, а вот zlib обновился в августе, так что может zlib чудит.

tx00100xt commented 8 months ago

Попробовал, тоже самое. Как я говорил, прошлая версия была версия скомпилирована в июне, а вот zlib обновился в августе, так что может zlib чудит.

Предполагаю что проблема где-то в самой системе.

Я только-что сделал полное обновление системы. Собрал с внешним zlib. и всё работает нормально. Снимок экрана в 2023-10-19 20-19-33

Могу пока что предложить как временное решение - PKGBUILD с использование встроенного zlib: serioussam-vk-1.10.6-1-x86_64-with-internal-zlib.tar.gz У себя собрал - работает без внешнего zlib.

tx00100xt commented 8 months ago

В Арче уже не первый раз zlib у людей ломается. https://aur.archlinux.org/packages/serioussam#comment-903474 Может починится следующими обновлениями.

SopaDeMacaco-UmaDelicia commented 8 months ago

У себя собрал - работает без внешнего zlib.

Т.е. работает чисто с системной zlib?

SopaDeMacaco-UmaDelicia commented 8 months ago

Собрал со встроенной в движок zlib, заработало

tx00100xt commented 8 months ago

Т.е. работает чисто с системной zlib?

Наоборот - вообще не использует системный zlib. Использует свой внутренний.

Собрал со встроенной в движок zlib, заработало

Отлично.