Інструменти ОС Linux для розробників програм для ОС Windows

Цей цикл статей, в основному, призначений для розробників драйверів (модулів ядра), які забезпечують підтримку специфічних апаратних засобів або розширюють набір системних утиліт для діагностики та управління. Тому всі попередні статті були сфокусовані на використанні мови програмування С, оскільки сама система Linux (як ядро, так і більша частина GNU утиліт) написані мовою C (правда ядро ​​містить незначні включення асемблерного коду).

Однак і для прикладних програмістів ОС Linux надає всі можливості, доступні в галузі розробки програмного забезпечення. У цій статті ми розглянемо деякі інструменти Linux для створення додатків з графічним інтерфейсом користувача.

Створення програм з графічним інтерфейсом користувача

Створення додатків, що взаємодіють з користувачем за допомогою графічного інтерфейсу (GUI додатка), відноситься до самостійного класу завдань і навіть до окремої області програмування. У подібний списокавтономних класів завдань з галузі розробки ПЗ можна, наприклад, виділити:

До подібнихнезалежних областей відноситься і розробка GUI додатків. Крім своєї специфіки у вигляді доступних інструментів і засобів, необхідно врахувати ще одну важливу відмінність — діаметрально протилежне ставлення до GUI в операційних системах сімейства Windows і UNIX (і в Linux, як його приватний вид):

У Windowsкожне додаток відноситься до GUI-додатків, так як невід'ємним атрибутомбудь-якого програми у Win32 API (низького рівня) є головне вікно програми, і сама програма будується навколо цього вікна. Операційна системареєструє класи вікон та надалі співвідносить з ними конкретні додатки. Звичайна програма, що взаємодіє з користувачем, просто не може існувати без вікна, і з цим були пов'язані початкові проблеми з реалізацією консольних (термінальних) програм у Windows.

На платформі UNIX спостерігається протилежна картина, коли первинним є додаток, за умовчаннямконсольне (текстове), і вся графічна система не є складовою операційної системи, а представлена ​​у вигляді надбудовикористувача рівня. Найчастіше як така графічна надбудова використовуєтьсяX11 (в реалізації Xorg або X11R5), але це не обов'язково, тому що існують і інші графічні системи, наприклад,Qwindow, і згодомPhoton в операційній системі QNX, що співіснують там одночасно з X11.

Тому через дану специфіку, розробка GUI-додатків для ОС UNIX (Linux) принципово відрізняється, за рахунок того що:

  1. GUI-додатки функціонують через проміжні шари (бібліотеки) рівня користувача;
  2. Завдяки розміщенню графічної підсистеми на рівні користувача, для програмістів пропонується широкий спектр альтернативних інструментів (бібліотек), практично рівнозначних і конкуруючих один з одним: Xlib, GTK+, Qt, wxW & Клацніть, щоб побачити збільшене зображення

linux

Приклади використання різних GUI-бібліотек

В силу сказаного всі GUI-додатки для ОС Linux, незалежно від інструментів, що використовуються для їх створення, мають абсолютно однакову структуру. Далі ми порівняємо код декількох найпростіших додатків GUI, розроблених за допомогою різних інструментів. Основною метою подібної демонстрації буде знайомство зпринципами використання різних бібліотек та команд для компіляції та складання GUI-додатків, щоб надати читачеві можливість надалі створювати власні GUI додатки. Повний код прикладів, представлених у цій статті, можна знайти в архівах, представлених у розділі "Матеріали для скачування" (для кожної бібліотеки використовується власний каталог у прикладах).

Лістинг 1. Створення GUI-додатки засобами Xlib (каталог Xlib):

Зберемо і запустимо програму, як показано нижче:

Малюнок 2. Найпростіший Xlib-додаток.

linux

Лістинг 2 Створення GUI-додатки засобами GTK+ (каталог GTK+):

Як і минулого разу зберемо і запустимо додаток:

Малюнок 3. Найпростіший GTK+додаток

інструменти

Бібліотека Qt передбачає написання додатків мовою С++ і має багатий набір інструментів, наприклад, для побудови сценарію складання програми. Спочатку ми створимо в робочому каталозі (спочатку порожньому) файл вихідного коду програми, як показано в лістингу 3. Повний код прикладу можна знайти в архіві каталогуQt в розділі "Матеріали для скачування".

Лістинг 3. Приклад програми Qt (файл index.cc)

А тепер для складання нашого проекту виконаємо наступні команди:

Таким чином, з наявних файлів з вихідним кодом був згенерований файл проекту і, потім, сценарій збірки (Makefile). Залишається виконати складання проекту та вивчити опції, які використовувалися для компіляції та складання:

Рисунок 4. Приклад Qt-програми
Лістинг 4. Створення GUI-застосування засобами бібліотеки wxW >

Як зазвичай зберемо і запустимо додаток:

Малюнок 5. Приклад wx-W />
Лістинг 6. Приклад GLUT-програми (каталог glut)

Зберемо ізапустимо додаток:

Рисунок 6. Приклад GLUT-програми

програм

linux

Висновок

Хоча всі представлені приклади містять тільки базову функціональність, але вони дозволяють порівняти поведінку різних GUI-бібліотек в X11 і можуть послужити відправною точкою для розробки більш функціональних GUI-додатків. Ми розглянули лише кілька GUI-технологій, доступних у X11, хоча більшість із них є крос-платформними і можуть застосовуватись і в інших операційних системах. Всі перелічені технології та інші, що існують в еко-системі Unix/Linux, взаємно заміняються і навіть доповнюються взаємно.

У цій статті ми розглянули приклади простих GUI-додатків, але складні візуальні інтерфейси для таких додатків зазвичай створюються не шляхом безпосереднього кодування, а за рахунок використання інтегрованих середовищ розробки (IDE) та їх "майстрів" (візардів) для візуальної розробки інтерфейсу користувача.