Статическая сборка c библиотекой SDL2
Если в проекте на языке С++
используется SDL2
, то обычно исполняемый файл при сборке линкуется с библиотекой динамически. Это не всегда оказывается удобным. Ваше приложение оказывается зависимым от (не)установленных / изменившихся сторонних библиотек, из-за чего в один “прекрасный” момент оно может просто оказаться неработоспособным. В настоящее время лицензия на использование библиотеки SDL2
позволяет без ограничений статически встраивать код библиотеки в Вашу программу. Этим мы сейчас и займемся.
Естественно, размер исполняемого файла при статической линковке увеличится на несколько мегабайт. Но это избавит Ваших потенциальных пользователей от необходимости делать лишние движения - искать в сети, скачивать и устанавливать дополнительные компоненты. Достаточно будет скачать только одно Ваше приложение. Согласитесь - это плюс.
Для проверки и демонстрации соберем небольшую (мультиплатформенную) утилиту, которая при помощи диалогового окна сообщит нам какая используется видео-подсистема, поддерживаемую системой версию OpenGL
и GLSL
. Возможность получить такие данные будет крайне полезна при разработке будущего графического приложения. Для разработки под MS-Windows нам потребуется i686-w64-mingw и библиотека SDL2
.
Весь код приложения на C++ занимает несколько десятков строк. Информацию о версии OpenGL и используемом оборудовании получим при помощи встроенных в OpenGL
функций glGetIntegerv()
и glGetString()
через библиотеку SDL2
. С ее помощью мы создадим тестовое окно и необходимый контекст OpenGL. Для создания простого диалогового окна также используем функционал SDL2 (файл gl_ver_test.cpp):
Чтобы все корректно скомпилировать, воспользуемся утилитой “make”. Для ее работы надо подготовить рабочий файл параметров, в котором указываются пути поиска библиотек, используемые модули и порядок сборки проекта. Перечень необходимых модулей перечислить по памяти практически невозможно. Да это и не не требуется - в файле i686-w64-mingw32/bin/sdl2-config
в конце в секции --static-libs
есть перечень всех модулей которые необходимо подключить. Их и укажем в файле параметров Makefile
:
Осталось скомпилировать программу командой make -f Makefile
и наслаждаться результатом.
В make-файле под Linux
не используется статическая компиляция SDL2
. Причина идеологического характера - в Линуксе принято делать так, чтобы каждая программа выполняла только свои функции. Но при желании Вы можете подкорректировать make-файл для получения через sdl2-config
параметров для статической линковки файла.