Как грамотно слинковать приложение для распространения в бинарном виде на другие ПК?
Добрый день.
Написал GUI-приложение (игру) с использованием SDL, OpenAL, ну и всяких там libpng. Задача - скомпилировать всё так, чтобы результат можно было распространять в бинарном виде на другие ПК и чтобы не было проблем с зависимостями.
Изначально планировал положить в папку все основные .so-файлы, которые выдаёт ldd mygame
. Но, во-первых, я не уверен, что это правильное решение, а во-вторых, упёрся как минимум в одну дебильную проблему. Я работаю в Debian 9, в которой пакет libSDL2 имеет версию 2.0.5+dfsg1-2. При запуске на виртуальной машине с чистым Debian 8 получаю ./libSDL2-2.0.so.0: undefined symbol: wl_proxy_marshal_constructor_versioned
. При этом, если пакет libSDL2 установить в Debian 8 (версия пакета 2.0.2+dfsg1-6), все работает. Что ж это, брать более старую версию?
Чистый Ubuntu 12.04 ругается на отсутствие libXss.so.1, libwayland-client.so.0 и др., которых в папке с игрой действительно нет и я не уверен, при чём тут вообще wayland.
Кстати, в папку даже положил libstdc++.so.6, иначе ругается на version CXXABI_1.3.9 not found
, version GLIBCXX 3.4.21 not found
и т.д., -static-libstdc++ не дает никакого эффекта.
Короче, как грамотно поступить-то? Для справки, некоторые библиотеки под LGPL, их надо линковать только динамически. Но большинство под лицензией BSD/MIT/ZLib/WTFPL.