Последнее обновление:
Графическая библиотека SFML в Linux: как ее установить и использовать
В операционной системе Linux, нередко, используется так называемая консоль. Это когда черный экран, командная строка и… все. Но, консоль бывает удобна, как правило, для обслуживания самой операционной системы, тогда как пользовательские приложения обычно используют графический интерфейс (так называемый GUI - Grafic User Interface). Для его реализации необходима, соответственно, та или иная графическая библиотека.
Вообще, в настоящее время графических библиотек просто масса – и больших и малых, и простых и многофункциональных, и т.д. Мы в этой не будем даже пытаться рассмотреть их все, а сосредоточимся на известной библиотеке SFML. Написано о ней достаточно, например, в Википедии.
По умолчанию, эта библиотека не является установленной в Linux (например, Ubuntu). Кроме того, не установлены и зависимости, требуемые для ее полноценной установки и работы.
Устанавливаем зависимости
Для установки зависимостей, равно как и для установки самой библиотеки, можно использовать команды apt-get
, aptitude
.
Настоятельно рекомендуется использовать именно aptitude
, так как именно она позволяет установить зависимости корректно и без ошибок. Тогда как apt-get
иногда не приводит к нужному результату.
Для того, чтобы установить зависимости, следует выполнить следующие команды:
# sfml-window
aptitude install libx11-dev -y
aptitude install libxcb1-dev -y
aptitude install libx11-xcb-dev -y
aptitude install libxcb-randr0-dev -y
aptitude install libxcb-image0-dev -y
aptitude install libxrandr-dev -y
aptitude install libgl1-mesa-dev -y
aptitude install libudev-dev -y
aptitude install libxrandr-dev -y
# sfml-graphics
aptitude install libfreetype6-dev -y
aptitude install libjpeg-dev -y
# sfml-audio
aptitude install libopenal-dev -y
aptitude install libflac-dev -y
aptitude install libvorbis-dev -y
Например, в Ubuntu 16.04 LTS установка проходит без каких-либо проблем.
Устанавливаем библиотеку SFML (в Ubuntu, Debian)
Устанавливать библиотеку SFML
на Linux можно по-разному:
Из репозитория:
- Скачать готовый дистрибутив и установить библиотеку вручную
- Скачать исходный код, собрать, установить
Лучше всего выбрать первый способ, если есть возможность. Для этого используем команду
sudo aptitude install libsfml-dev
Как компилировать программу с библиотекой SFML
Пример программного кода
Рассмотрим простейший пример:
// Подключаем заголовок модуля Graphics, а он автоматически подключает заголовок модуля Window
#include <SFML/Graphics.hpp>
int main()
{
// создаём окно
sf::RenderWindow app(sf::VideoMode(800, 600, 32), "Hello World - SFML");
// основной цикл
while (app.isOpen())
{
// проверяем события (нажатие кнопки, закрытие окна и т.д.)
sf::Event event;
while (app.pollEvent(event))
{
// если событие "закрытие окна":
if (event.type == sf::Event::Closed)
// закрываем окно
app.close();
}
// очищаем экран и заливаем его синим цветом
app.clear(sf::Color(0,0,255));
// отображаем на экран
app.display();
}
return 0;
}
Компиляция
1. Вначале следует создать объектный файл
g++ -c main.cpp
Если все успешно, создастся файл main.o
.
2. Сборка
Чтобы получить исполняемый файл, следует сделать сборку, т.е. связать скомпилированный файл с библиотекой SFML. SFML состоит из пяти модулей: system
, window
, graphics
, audio
и network
и библиотек для каждого из них. Что бы собрать приложение с библиотекой SFML, нужно должны добавить опцию "-lsfml-xxx
" к команде компоновки. Например, "-lsfml-graphics
" для модуля graphics
(префикс «lib
» и расширение ".so
" библиотеки должны быть опущены).
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
Если все будет нормально скомпилировано и собрано, то, будучи запущенной, эта программа выводит окно, залитое синим цветом, как на рисунке:

Запуск программы может производиться либо из консоли (./sfml-app
), либо путем двойного клика мыши на имени файла sfml-app
в менеджере файлов.