пятница, 7 апреля 2017 г.

Как скомпилировать программу на GTK+ 3 в Ubuntu

Logo GTK
GTK+ представляет собой кроссплатформенную библиотеку элементов интерфейса, которая позволяет создавать программы с графическим интерфейсом. GTK+ написана на языке Си. Но, благодаря своей внутренней архитектуры, библиотека портирована и на другие популярные языки программирования.

Уже несколько лет я присматриваюсь к GTK+, накопил немного опыта и постараюсь с ним поделиться на страницах этого блога. Начну с первых шагов: как скомпилировать программу с использованием GTK+ в Ubuntu.

Первым шагом установим необходимые пакеты для программирования. Это build-essential и libgtk-3-dev. Остальные нужные пакеты подтянутся по зависимостям. Установить их можно командой в терминале:

sudo apt install build-essential libgtk-3-dev

Одним из начальных шагов в программировании является выбор текстового редактора с подсветкой синтаксиса (или интегрированной среды разработки, IDE). Ассортимент довольно широкий: geany, gedit, kate, vim, emacs... Здесь каждый сам выбираем, на свой вкус и цвет. Мой же выбор остановился на легковестной IDE "geany".

По традиции первая программа — "Hello World!". Текст данной программы возьмём со страницы русскоязычной Википедии по GTK+. И добавив строчку с командой указания размера окна по умолчанию, получаем:

/* Подключаем библиотеку GTK+ */
# include <gtk/gtk.h>

int main( int argc, char *argv[])
{
    /* Объявляем виджеты */
    GtkWidget *label;   // Метка
    GtkWidget *window;  // Главное окно

    /* Инициализируем GTK+ */
    gtk_init(&argc, &argv);

    /* Создаем главное окно */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    /* Устанавливаем заголовок окна "Здравствуй, мир!" */
    gtk_window_set_title(GTK_WINDOW(window), "Здравствуй, мир!");

    /* Создаем метку с текстом "Здравствуй, мир!" */
    label = gtk_label_new("Здравствуй, мир!");

    /* Задание размера окна по умолчанию  */
    gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);

    /* Вставляем метку в главное окно */
    gtk_container_add(GTK_CONTAINER(window), label);

    /* Показываем окно вместе с виджетами */
    gtk_widget_show_all(window);

    /* Соединяем сигнал завершения с выходом из программы */
    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

    /* Приложение переходит в вечный цикл ожидания действий пользователя */
    gtk_main();

    return 0;
}

Сохраняем программу в файл с именем hello.c

Компилировать будем в терминале. В Unity терминал можно открыть горячими клавишами <ctrl> + <alt> + <T>. В терминале с помощью команды cd переходим в директорию, куда сохранили hello.c. Если файл лежит в директории ~/Study/gtk3, то команда будет:

cd ~/Study/gtk3

Для просмотра содержания директории используется команда ls.

Находясь в папке с файлом hello.c, компилирование выполняется командой:

gcc -Wall `pkg-config --cflags gtk+-3.0` -o hello hello.c `pkg-config --libs gtk+-3.0`

При отсутствии ошибок, компиляция пройдёт успешно и у вас появится исполняемый файл hello. Запустить который можно командой:

./hello

Программа Hello World на GTK+ 3
Программа Hello World на GTK+ 3