Библиотеки для Иксов (введение для начинающих)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin
Контактная информация:

Библиотеки для Иксов

Сообщение Bolverk »

Все программы используют определённые библиотеки, которые в том числе и
загружаются в память при работе программы. Структура тут типа пирамидальной -
библиотеки более высокого уровня используют библиотеки низших уровней. С
приложениями бывает по-разному, как правило, приложения с большей
функциональностью требуют библиотеки более высокого уровня и, соответственно,
"простые" приложения можно написать на "низкоуровневых" приложениях.
Ещё совет - посмотреть, какие библиотеки использует бинарник, можно командой
ldd. Обычно по названию библиотеки понятно, к чему оно относится, если нет -
копать базу установленных пакетов.
Базовой библиотекой любой нормальной юниксоидной системой является "общая
библиотека языка C" - libc. В линуксах как правило используется GNU-реализация
- glibc.
Если говорить про графические, т.е. иксовые приложения, то базовыми для них
является иксовые же библиотеки - (см. /usr/X11R6/lib/). Простые программы, типа
twm, xclock и многие другие, начинающиеся на x, используют только иксовые
библиотеки и могут работать под "голыми" иксами. Это, кстати, иллюстрация
традиции - давать приложениям, использующие определенные библиотеки,
характерные префиксы (см. ниже).
Графические библиотеки более высокого уровня - gtk, qt, другие: sdl (особенно
ее любят писатели игрушек), fltk, motif, xforms ну и прочие в том числе и
экзотические библиотеки. Они предоставляют гораздо более широкие возможности по
стандартизации интерфейса, например, и многое другое. Для gtk-приложений часто
используется префикс g (который путается с префиксом, означающим GNU) и gtk,
для qt - q или qt, который редко с чем путается :) С другими библиотеками
ситуация схожая.
Window Manager - приложение, осуществляющее контроль за положением окон, и не
более того. Может быть написано с использованием самых разных библиотек. Обычно
включает меню приложений, панель задач, несколько рабочих столов и т.п.
GNOME и KDE - Desktop Environments, т. е. рабочие среды, построенные
соответственно на gtk и qt. С точки зрения программиста, это - библиотеки
более высокого ровня, чем gtk и qt, предоставляющие ещё больше возможностей.
Помимо wm, который, кстати, может быть разные внутри одного de, содержит
прикладные программы, тесно интегрированные между собой. Эти прикладные
программы построены уже не просто на библиотеках gtk и qt, а на гномовских и
кдешных библиотеках. Префиксы - g-, gnome- и k-, kde-.
Упомяну такую штуку как однородность среды. Чем меньше разных библиотек
одновременно используется, тем меньше нагрузка на систему, включаю дисковое
пространство, и использование памяти для работы. Поэтому выгоднее использовать
приложения, построенные на одной и той же библиотеки. При этом они обычно
гораздо лучше интегрируются, имеют схожий интерфейс. Настройки библиотеки
влияют на вид всех приложений, использующих эту библиотеку, есть еще themes и
engines, позволяющие изменять внешние вид всех приложений, использующих эту
библиотеку.
С gtk и qt еще такая штука: если приложений, использующих gtk без GNOME,
наверное больше, чем гномовских, то чисто-qt приложений - по пальцам
пересчитать, они, как правило, все тесно интегрированы с kde.
XFCE также претендует на звание полноценного de, и ещё они сейчас работают над
отрывом gtk от их библиотеки.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Библиотеки для Иксов

Сообщение alv »

когда начиналась тема про выбор десктопа/wm, высказывалось предложение осветить в том документе вопрос о библиотеках, на которых оные основывались. Однако мне показалось целесообразным выделить это в отдельное производство. Момент настал - благо Bolverk сочинил прекрасный прототип введения в Иксовые библиотеки.

Дополнения, предложения, коррективы?
Спасибо сказали:
Аватара пользователя
estarchak
Сообщения: 1368
Статус: Оракловод

Re: Библиотеки для Иксов

Сообщение estarchak »

Qt - бтблтоьека, разработанная фирмой TrollTech, является неотъемлимой частью проекта KDE. Существуют реализации этой библиотеки для различных операционных систем, что позволяет разработчикам писать кроссплатформенные приложения и облегчает перенос графического интерфейса приложения из одной операционной системы в другую.
В библиотеке Qt используется концепция сигналов и приёмников (signal-slot), когда каждый виджет (widget - искуственно образованное слово от слов window и gadget) при действии с ним посылает сигналы, а виджеты, настроенные на обработку данного сигнала(приёмники) непосредственно обрабатывают данный сигнал.
Дети любят тигра больше, чем Пржевальский лошадей. © Тимур Шаов.

Топик не читал, но внимательно просмотрел.
Спасибо сказали:
EdiG
Сообщения: 33
Контактная информация:

Re: Библиотеки для Иксов

Сообщение EdiG »

LinuxFocus.org
много интересного с примерами
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: Библиотеки для Иксов

Сообщение Valerius »

(estarchak @ Воскресенье, 26 Июня 2005, 17:59) писал(а):Qt - бтблтоьека, разработанная фирмой TrollTech, является неотъемлимой частью проекта KDE.

Если уж говорить совсем точно, то QT не есть часть проекта KDE. KDE её использует и так сказать, жить без неё не может, но она никак не входит в состав КДЕ.
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ilich
Сообщения: 156
Контактная информация:

Re: Библиотеки для Иксов

Сообщение ilich »

(EdiG @ Воскресенье, 26 Июня 2005, 18:17) писал(а):LinuxFocus.org
много интересного с примерами


Спасибо за ссылочку. Сам недавно столкнулся с проблемой разработки кроссплатформенных приложений. Пока что использую Java (Swing, SWT) и GTK. Прочитаю док, и может что-нить изменется...
:thumbsup:
!!! БЕРИ ОТ ЖИЗНИ ВСЕ !!!
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Библиотеки для Иксов

Сообщение alv »

Вот, немного причесал текст:

Библиотеки для Иксов
Введение для начинающих
Создано Bolverk'ом при участии коллективного разума Линуксфорума
Все программы используют определённые библиотеки, которые в том числе и загружаются в память при работе программы. Структура тут типа пирамидальной - библиотеки более высокого уровня используют библиотеки низших уровней. С приложениями бывает по-разному, как правило, приложения с большей функциональностью требуют библиотеки более высокого уровня и, соответственно, "простые" приложения можно написать на "низкоуровневых" библиотеках.
Посмотреть, какие библиотеки использует данное приложение, можно командой ldd. Обычно по названию библиотеки понятно, к чему оно относится, если нет - придется изучать базу данных установленных пакетов.
Базовой библиотекой любой нормальной юниксоидной системой является "общая библиотека языка C" - libc. В Linux как правило используется GNU-реализация - glibc, в BSD-системах - собственная библиотека libc.
Кроме того или иного варианта libc, консольные программы текстового режима могут использовать и некоторые другие библиотеки. Так, практически всегда используется терминальная библиотека ncurses, а также библиотека zlib.
Если говорить про графические, т.е. Иксовые, приложения, то базовыми для них является иксовые же библиотеки - xlib (размещающиеся в /usr/X11R6/lib/). Простые программы, типа twm, xclock и многие другие, начинающиеся на x и входящие в щтатный комплект данной реализации Иксов (например, xorg), по определению используют только Иксовые библиотеки и, соответственно, могут работать под "голыми" Иксами. Это, кстати, иллюстрация традиции - давать приложениям, использующие определенные библиотеки, характерные префиксы (см. ниже). В то же время с использованием только xlib можно собрать и довольно сложные программы, например, большинство оконных менеджеров box-семейства, и даже OpenOffice.org (хотя обычно привлеакаются и библиотеки более высокого уровня.
Графические библиотеки более высокого уровня - gtk, qt, другие: sdl (особенно ее любят писатели игрушек), fltk, motif, xforms, ну и прочие в том числе и экзотические библиотеки. Они предоставляют гораздо более широкие возможности по стандартизации интерфейса, например, и многое другое. Для gtk-приложений часто используется префикс g (который путается с префиксом, означающим GNU) и gtk, для qt - q или qt, который редко с чем путается. С другими библиотеками ситуация схожая.
Qt - библиотека, разработанная фирмой TrollTech. Существуют реализации этой библиотеки для различных операционных систем, что позволяет разработчикам писать кроссплатформенные приложения и облегчает перенос графического интерфейса приложения из одной операционной системы в другую. Библиотека Qt распространяется в двух вариантах: коммерческом (за немалые, между прочи, деньги) и бесплатном, под лицензией QPL, основанной на GPL. Последняя предполагает исключительно некоммерческое использование основанных на ней программ.
В библиотеке Qt используется концепция сигналов и приёмников (signal-slot), когда каждый виджет (widget - искуственно образованное слово от слов window и gadget) при действии с ним посылает сигналы, а виджеты, настроенные на обработку данного сигнала(приёмники) непосредственно обрабатывают данный сигнал.
Менеджер окон (Window Manager) - приложение, осуществляющее контроль за положением и поведением окон, и не более того. Может быть написано с использованием самых разных библиотек. Обычно включает меню приложений, панель задач, несколько рабочих столов и т.п.
GNOME и KDE - Desktop Environments, т. е. рабочие среды, построенные соответственно на gtk и qt. С точки зрения программиста, это - библиотеки более высокого ровня, чем gtk и qt, предоставляющие ещё больше возможностей. Помимо WM, который, кстати, может быть разные внутри одного DE, они содержат прикладные программы, тесно интегрированные между собой. Эти прикладные программы построены уже не просто на библиотеках gtk и qt, а собственных библиотеках - libs-gnome и kdelibs (для GNOME и KDE). И в префиксах своих имен имеют - g и k, соответственно.
Упомянем еще такое понятие, как однородность среды. Чем меньше разных библиотек одновременно используется, тем меньше нагрузка на систему, включаю дисковое пространство, и использование памяти для работы. Поэтому выгоднее использовать приложения, построенные на одной и той же библиотеки. При этом они обычно гораздо лучше интегрируются, имеют схожий интерфейс. Настройки библиотеки влияют на вид всех приложений, использующих эту библиотеку. Есть еще themes и engines, позволяющие изменять внешний вид всех приложений, использующих эту библиотеку.
С gtk и qt еще такая штука: если приложений, использующих gtk без GNOME, наверное больше, чем гномовских, то чисто-qt приложений - не очень много. Большинство их тесно интегрированы с kde. Тем не менее, среди чисто Qt'шных приложений - такие популярные icq- и jabber-клиенты, как licq и psi. Как бы коммерческий браузер Opera также имеет своей базой библиотеку Qt.
Библиотеки Qt и Gtk могут выступать как альтерналитвы при построении интефейсов сложных программных комплексов. Выше упоминалось, что OOo может быть собран с использованием только базовых Иксовых библиотек (и такие сборки существовали, например, первый русский OOo от Altlinux). Однако чаще он линкуется с библиотечными функциями Gtk. Меньшее распространение получили KDE-варианты сборки OOo. Однако ныне равноправный выбор между использованием Gtk и KDE станет (начиная со сборки 18 2-й версии) штатной особенностью этого офисного пакета.
XFCE также претендует на звание полноценного DE, и его разработчики сейчас занимаются освобождением этой среды от связи с gtk.


Ожидаем дополнений и корректив. В частности, необходимо дополнение про Gtk и lib-gnome, хотелось бы видеть пару абзацев про Motif etc.
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux
Контактная информация:

Re: Библиотеки для Иксов

Сообщение polachok »

Так, практически всегда используется терминальная библиотека ncurses, а также библиотека zlib.

Далеко не всегда. часто - да.

Библиотека Gtk (и современная реализация ее - Gtk-2) написана на языке Си. Поэтому программирование для нее является намного более сложным делом, чем программирование для библиотеки Qt, написаной на Си++, и использующей классы и другие преимущества C++. Но существуют дополнительные библиотеки с суффиксом mm(gnomemm,gnomeuimm) которые предоставляют возможность писать на C++ для GNOME.

PS что писать про libgnome?
LibGnome provides the non-GUI backend for the GNOME environment.
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Библиотеки для Иксов

Сообщение t.t »

Библиотека Gtk (и современная реализация ее - Gtk-2) написана на языке Си. Поэтому программирование для нее является намного более сложным делом, чем программирование для библиотеки Qt, написаной на Си++, и использующей классы и другие преимущества C++.
Это всё же несколько из категории вкуса и цвета. Я, кажется, даже на этом форуме видел людей, которым на си писать удобнее, чем на си++.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux
Контактная информация:

Re: Библиотеки для Иксов

Сообщение polachok »

ладно, замнем тему о простоте программирования.
Библиотека Gtk (и современная реализация ее - Gtk-2) написана на языке Си, но существуют дополнительные библиотеки с суффиксом mm (gnomemm,gnomeuimm) которые предоставляют возможность писать на C++ для GNOME.

Библиотеки EFL.
EFL значит Enlightenment Foundation Libraries. Это библиотеки проекта Enlightenment. Изначально они писались исключительно для поддержки этого оконного менеджера, но позже превратились в самостоятельные проекты. Основу составляют две: Imlib2 и evas. Evas может работать на основе различных движков (Linux FrameBuffer, DirectFB, X11, OpenGL, QTopia) и поэтому является хорошо переносимой. Все остальные EFL-библиотеки базируется на ней.
На основе EFL в настоящее время не слишком много приложений, но их число постоянно увеличивается, а качество растет. EFL - платформа будущего :).

Блин, просто рекламный проспект какой-то получился...
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Библиотеки для Иксов

Сообщение alv »

несколько модифицированная версия
http://www.posix.ru/desktop/libs_x/
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin
Контактная информация:

Re: Библиотеки для Иксов

Сообщение Bolverk »

Угу. Пробежался глазами, опечаток умеренно много, через недельку вычитаю.
Спасибо сказали:
XPhoenix
Сообщения: 28

Re: Библиотеки для Иксов

Сообщение XPhoenix »

Забыли осветить главное достоинство (и недостаток :)) иксов. Иксы работают на основе сетевого протокола. Поэтому XLib может быть переписанна на любой язык (по вкусу)...Было дело я даже писал реализацию на Java... :)
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin
Контактная информация:

Re: Библиотеки для Иксов

Сообщение Bolverk »

Раскройте кто-нибудь тему gtk-bindingов для других языков, в паре предложений.
Спасибо сказали:
Ответить