Создание приложений под linux

Создание графических приложений

Цилюрик О.И.

Настоящая статья является дополнением к книге «Инструменты Linux для Windows-программистов». Это не описание как делать GUI приложения в Linux, это описание того, как ПРИСТУПИТЬ к созданию графических приложений в Linux, и, хотелось бы надеяться что это прозвучит — чем принципиально программирование графики в Linux отличается от того же занятия в Windows. Главным требованием здесь была простота. Сделав простейший шаблон GUI прложения, дальше двигаться уже гораздо проще. Кроме того, все эти простейшие приёмы программирования показаны сравнительно: на основе основных графических технологий (библиотек), используемых в UNIX.

Все примеры к тексту вы можете скачать в виде общего архива.

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

  • реализация алгоритмов цифровой обработки сигналов (DSP): быстрые спектральные преобразования (FFT и другие), вэйвлеты, авторегрессионные разложения. ;
  • обработка аудио-потоков (пакеты: sox, ogg, speex и другие);
  • задачи IP-телефонии, SIP протокола, реализация разнообразных программных SoftSwitch;

Это сравнительный ряд автономных областей развития приведен как пример таких частных классов, одним из которых является и разработка GUI приложений. И как частный класс, со своей спецификой инструментов и средств, он не заслуживал бы отдельного упоминания, если бы не одно обстоятельство — принципиально отличающееся, диаметрально противоположное отношение к GUI в операционных системах семейства Windows и в UNIX (и в Linux, как его частный вид):

  • В Windows каждое приложение является принципиально GUI, неотъемлемым атрибутом любого приложения в Win32 API (низкого уровня) является главное окно приложения, уже само приложение «вяжется» вокруг его главного окна. Операционная система регистрирует классы окон и уже далее к ним соотносит конкретные приложения. Не может существовать приложения (взаимодействующего с пользователем, не системные службы) без окна, с этим были связаны и первоначальные сложности Windows в реализации консольных (терминальных) приложений.
  • в UNIX картина принципиально обратная: первичным является приложение, которое, по умолчанию, является консольным, текстовым, вся графическая система не является составной частью операционной системы, а является надстройкой пользовательского уровня. Чаще всего такой графической надстройкой является X11 (в реализации Xorg или X11R5), но и это не обязательно: практиковались и другие графические системы, хороший пример тому графические системы Qwindow, а затем Photon в операционной системе QNX, сосуществующие там одновременно с X11.
  • Показательно в этом смысле то, что вся оригинальная часть реализации X11 работает в пространстве пользователя, не в привилегированном режиме ядра (супервизора): работа с аппаратурой видеоадаптеров, устройствами ввода и другое. Отдельные реализации (видеосистемы NVIDIA или ATI Radeon) могут быть реализованы в режиме ядра (модули), но это а) сторонние относительно X11 разработки, и б) решение вопросов только производительности.

Из-за обозначенной специфики, разработка GUI приложений в UNIX (Linux) принципиально отличается:

  • вся работа GUI приложений ведётся через промежуточные слои (библиотеки) пользовательского уровня;
  • из-за того, что это ординарный пользовательский уровень, для разработчика предлагается широкий спектр альтернативных инструментов (библиотек), практически равнозначных, и конкурирующих друг с другом: Xlib, GTK+, Qt, wxWorks и многие другие.
  • базовый API работы с X11 предоставляет Xlib, все другие используют уже её функционал, как это показано на рисунке.

  • разработчик имеет возможность широкого выбора тех уровня и инструментов, которые он предполагает использовать, начиная от Xlib и выше (хотя уровень Xlib и слишком низок и работа с ним громоздкая).

Из-за названной специфики GUI приложений в Linux, все они, независимо от используемых средств создания, имеют абсолютно сходную структуру. Рассмотрим, для сравнения, код нескольких простейших GUI приложений, подготовленных с помощью различных инструментов. Важнейшей задачей такой экспозиции будут команды компиляции и сборки, чтобы, исходя из таких примеров, показать возможность начать создавать свои собственные GUI приложения.

Читайте также:  Microsoft hello windows 10

Средства Xlib (архив Xlib.tgz ):

Средства GTK+ (архив GTK+.tgz ):

$ gcc gtk.c -o gtk `pkg-config —cflags —libs gtk+-2.0`

Средства Qt (архив Qt.tgz ):

Средства Qt предполагают написание приложений на языке С++, и имеют развитый инструментарий, в частности, построения сценария сборки приложения. Создадим в рабочем каталоге (изначально пустом) файл исходного кода приложения с произвольным именем:

Теперь проделываем последовательно:

Исходя из «подручных» файлов исходных кодов, у нас сгенерировался файл проекта и, далее, сценарий сборки ( Makefile ). Далее проделываем традиционную сборку, а заодно и посмотрим опции компиляции и сборки, которые нам сгенерировал проект:

g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables

g++ -o Qt index.o -L/usr/lib/qt-3.3/lib -lqt-mt -lXext -lX11 -lm

index.cc index.o Makefile Qt Qt.pro

Средства wxWidgets (архив wxWidgets.tgz):

$ g++ simple.cc `wx-config —cxxflags` `wx-config —libs` -o simple

Средства GLUT (архив glut.tgz):

OpenGL Utility Toolkit, как и следует из названия, это средства использования технологии OpenGL в приложениях, которая требует определённой поддержки со стороны видео оборудования.

$ gcc glut.c -o glut -lX11 -lglut

То, что показано выше, это фактически не приложения, а скелеты приложений, но они позволяют: а) сравнить подобие всех GUI технологий в X11, и б) быть отправной точкой для сборки более содержательных GUI приложений. Показано только несколько GUI технологий, применяемых в X11 (большинство из них являются кросс-платформенными, и применимы в большинстве существующих операционных систем). Каждая из этих технологий, а названы только немногие из значительно большего числа, присутствующих в UNIX, могут быть полной альтернативой любой другой из этого же ряда, они взаимно заменимы, и даже взаимно дополняемые.

В данной статье были показаны образцы кода GUI приложений. Естественно, визуальные образы таких приложений строятся не путём непосредственного кодирования, а при использовании некоторых визуальных построителей, в составе тех или иных интегрированных средств разработки (IDE).

Источник

10 лучших открытых инструментов для разработчика в Linux

«Linux может быть великолепной средой для разработки программного обеспечения, но вам нужны правильные инструменты, чтобы использовать его на полную мощность», — говорит Джек Валлен (Jack Wallen).

Без надёжных инструментов разработки вы не сможете воспользоваться лучшими преимуществами Linux. К счастью, Linux и открытое инструментальное программное обеспечение легко доступно. Однако, если вы новый пользователь, вы можете не знать, какие утилиты лучше выбрать, так что вот 10 выдающихся инструментов, которые помогут поднять вашу разработку на другой уровень.

1. Bluefish

Bluefish — одна из популярнейших интегрированных сред разработки, доступных для работы в вебе. Bluefish может обрабатывать языки программирования и языки разметки, но фокусируется на создании динамических и интерактивных веб-сайтов. Как и многие приложения для Linux, Bluefish быстр и лёгок — он использует примерно 30‒40 процентов ресурсов, потребляемых аналогичными приложениями.

Bluefish может открывать несколько документов одновременно: до 3 500 документов, если необходимо. Он включает в себя поддержку проекта, удалённую поддержку файлов, поиск и замену (включая регулярные выражения), неограниченную отмену/принятие сделанных изменений, настраиваемую подсветку синтаксиса для многих языков, сглаживание текста в окнах, а также поддержку различных кодировок.

Одной из лучших особенностей Bluefish является Quickbar — пользовательская панель, которая позволяет вам добавлять кнопки путём кликания по правой клавише мыши и выбора пункта «Добавить в Quickbar» (Add To Quickbar). Вы можете добавлять в Quickbar любую HTML-кнопку.

В Bluefish есть ряд простых инструментов, которые помогут вам добавить различные элементы в ваш код. Нужен auto-submit select box в DHTML? Легко. Выберите «Auto-submit Select Box» из выпадающего списка «DHTML» и заполните необходимые пункты для добавления элемента в ваш код. В Bluefish есть мастера для Си, Apache, DHTML, DocBook, HTML, PHP+HTML и SQL. Если вы разрабатываете свои сайты вручную, то без Bluefish вам не обойтись.

Читайте также:  Как удалить голосовой пакет windows 10

2. Anjuta

Anjuta — свободная открытая интегрированная среда разработки для языков Си и C++. Anjuta мощна и проста в установке (например, команда urpmi anjuta в Mandriva Linux). Anjuta предлагает такие функции, как управление проектами, прикладные мастера, интерактивный отладчик и мощный редактор исходного кода — с просмотром кода, его автозаполнением и подсветкой синтаксиса.

Anjuta имеет гибкий интерфейс пользователя, который позволяет вам перемещать (drag-and-drop) инструменты в набор инструментов для организации интерфейса пользователя в вариант, который вам больше нравится. Плюс каждый размещённый пользователем набор инструментов постоянен для проекта, так что вы можете иметь различные наборы инструментов для каждого проекта.

Anjuta также имеет мощную систему плагинов, которая позволяет вам решать для каждого проекта какие плагины активны, а какие — нет. И, как во всех открытых проектах, вы можете сами разработать свои плагины для Anjuta.

Одним из самых мощных инструментов в Anjuta является менеджер проекта. Он не только может открывать почти все проекты, основанные на Automake и Autoconf; он не добавляет никакой информации, связанной с Anjuta, так что ваш проект также может обслуживаться и разрабатываться вне Anjuta.

3. Glade

Glade — это RAD-инструмент, используемый для создания инструментария GTK+ и для среды рабочего стола GNOME. Его интерфейс подобен GIMP и может быть настроен и даже встроен в Anjuta.

Glade включает в себя ряд шаблонов, таких как текстовые блоки, диалоги, чекбоксы и меню, созданных для ускорения разработки интерфейсов. Конструкции интерфейса хранятся в XML, который позволяет им быть легко связанным со внешними инструментами.

Установка Glade проста. Например, в Fedora вы можете запустить команду yum install glade3 . В Glade нет такого мощного менеджера проекта как в Anjuta, но вы можете создавать, редактировать и сохранять проекты с Glade.

4. GCC

GCC — это набор компиляторов для Си, C++, Objective-C, Фортрана, Java и Ады, разработанный в рамках проекта GNU. Это инструмент командной строки, но он очень мощен. Многие интегрированные среды разработки имеют инструменты, которые являются только front-end’ами для GCC. Наиболее часто используются компиляторы для кода на Си и C++.

Как один инструмент компилирует приложения на разных языках? Просто: для Си вы применяете команду gcc, а для C++ вы применяете команду g++ — два компилятора в одном инструментарие. И g++ — компилятор, а не просто препроцессор.

GCC построит объектный код из исходного кода без использования посредника. Этот метод создаёт лучший объектный код и даёт вам больше отладочной информации.

5. Kdevelop

Kdevelop был создан в 1998 году как простая в использовании интегрированная среда разработки для среды рабочего стола KDE. Kdevelop в настоящее время распространяется под лицензией GNU General Public License и свободен для использования.

Он основан на плагинах, так что вы можете добавлять и удалять их для создания точно того, что вы хотите. Kdevelop также включает в себя поддержку профилей, так что различные наборы плагинов могут быть ассоциированы с конкретными проектами.

Kdevelop поддерживает 15 языков программирования, каждый из которых имеет свои языковые особенности. Он также предлагает отладчик, систему управления версиями Subversion, мастера приложений, просмотрщик документации, управление сниппетами, интеграцию Doxygen, инструменты RAD, поддержку Ctags, переформатирование кода, поддержку QuickOpen и панель окон с панелью инструментов.

Одной из лучших особенностей Kdevelop является то, что он снимает множество низкоуровневых задач из рук пользователей. Kdevelop включает в себя менеджер Automake.

Читайте также:  Спецсимволы для таблица windows

Ещё один полезный штрих заключается в том, что можно мгновенно видеть различие между ошибками, предупреждениями и сообщениями.

6. GDB

GDB не является инструментом для разработчиков, но этот инструмент многие разработчики считают для себя важным. GDB — это отладчик проекта GNU.

Этот инструмент запускается из командной строки и даёт разработчику мгновенный отзыв из другой программы, пока она выполняется. То есть вы создаёте и завершаете приложение только для того, чтобы узнать о том, что есть проблемы. Для того, чтобы помочь найти эти проблемы вы можете запустить вашу программу из утилиты GDB, которая поможет вам узнать, где эти проблемы. С GDB вы можете делать следующее:

  • запускать ваше приложение с указанием аргументов, переключателей или вводов, которые будут влиять на его поведение;
  • заставлять ваше приложение останавливаться на конкретном поведении;
  • проверять что произошло, когда ваше приложение остановилось;
  • добавлять изменения в вашу программу, так что вы можете тестировать прямо в полёте.

GDB также очень удобно иметь при создании отчёта об ошибках.

7. KompoZer

KompoZer — простой в использовании WYSIWYG-инструмент, направленный на нетехнических пользователей, которые хотят создать профессиональный веб-сайт без знания HTML.

KompoZer имеет ряд выдающихся особенностей. Одной из лучших особенностей является возможность открыть веб-сайт из URL, редактировать этот сайт и загрузить отредактированный сайт. Эта особенность упрощает обновление сайтов, лишая необходимости редактировать HTML. Конечно же, вам потребуется разрешение на загрузку сайта. Эта особенность также хороша для использоваия других сайтов в качестве шаблонов.

KompoZer не следует рассматривать только как инструмент для начинающих. Думайте о нём как о бесплатной открытой замене Microsoft FrontPage и Adobe Dreamweaver. И, как его более дорогостоящие альтернативы, в KompoZer можно перемещаться между WYSIWYG и редактированием кода путём кликания по табу.

8. Eclipse

Eclipse — мультиязычная интегрированная среда разработки, написанная на Java, с обширной системой плагинов, позволяющей вам расширить функциональность. Скачиваемый более миллиона раз ежемесячно, Eclipse — одно из сильнейших решений в области разработки программного обеспечения. Это, по сути, стандарт для открытой разработки.

Предположительно, сильнейшим аспектом Eclipse является особенность плагинов. Только для языков в Eclipse создано 58 плагинов. На этих языках не говорят — это языки разработки. Eclipse имеет огромное сообщество и множество организаций, предлагающих обучение интегрированным средам разработки, которое включает в себя даже университет Eclipse.

9. Make

Make — это утилита Linux, которая может автоматически определить, какие части программы нужно перекомпилировать. После того, как Make работает в частях, которые должны быть перекомпилированы, он выдаёт команды, необходимые для завершения действия.

Make часто используется при установке приложений из исходного кода, так что разработчики открытых приложений должны иметь хорошее представление об этом инструмение и о том, как он используется. Если вы планируете разработку приложения, которое можно будет установить из исходного кода, вам нужно знать как создавать Makefile.

Этот Makefile описывает отношения между разными файлами. Если вы знакомы с установкой приложений, вы знаете строковый тип ./configure; make; make install.

10. Quanta Plus

Quanta Plus — другой инструмент HTML для разработки, похожий на KompoZer. Он способен как на WYSIWYG, так и на ручной режим и поддерживает HTML, XHTML, CSS, XML и PHP.

Особенности Quanta Plus заключаются в завершении тегов на лету, управлении проектами, быстром предварительном просмотре, отладчике PHP, поддержке CVS и Subversion. Quanta Plus, в отличие от KompoZer, направлен на более опытного пользователя, который хочет хороший редактор WYSIWYG.

А что используетет вы?

Какие советы и мнения вы можете дать, основываясь на своём опыте, по инструментам, которые мы рассмотрели? Или у вас есть любимая свободная интегрированная среда разработки, которая не включена в этот список?

Источник

Оцените статью