Библиотеки для Иксов (введение для начинающих)
Модератор: Модераторы разделов
Библиотеки для Иксов
Все программы используют определённые библиотеки, которые в том числе и
загружаются в память при работе программы. Структура тут типа пирамидальной -
библиотеки более высокого уровня используют библиотеки низших уровней. С
приложениями бывает по-разному, как правило, приложения с большей
функциональностью требуют библиотеки более высокого уровня и, соответственно,
"простые" приложения можно написать на "низкоуровневых" приложениях.
Ещё совет - посмотреть, какие библиотеки использует бинарник, можно командой
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 от их библиотеки.
загружаются в память при работе программы. Структура тут типа пирамидальной -
библиотеки более высокого уровня используют библиотеки низших уровней. С
приложениями бывает по-разному, как правило, приложения с большей
функциональностью требуют библиотеки более высокого уровня и, соответственно,
"простые" приложения можно написать на "низкоуровневых" приложениях.
Ещё совет - посмотреть, какие библиотеки использует бинарник, можно командой
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 от их библиотеки.
Re: Библиотеки для Иксов
когда начиналась тема про выбор десктопа/wm, высказывалось предложение осветить в том документе вопрос о библиотеках, на которых оные основывались. Однако мне показалось целесообразным выделить это в отдельное производство. Момент настал - благо Bolverk сочинил прекрасный прототип введения в Иксовые библиотеки.
Дополнения, предложения, коррективы?
Дополнения, предложения, коррективы?
Re: Библиотеки для Иксов
Qt - бтблтоьека, разработанная фирмой TrollTech, является неотъемлимой частью проекта KDE. Существуют реализации этой библиотеки для различных операционных систем, что позволяет разработчикам писать кроссплатформенные приложения и облегчает перенос графического интерфейса приложения из одной операционной системы в другую.
В библиотеке Qt используется концепция сигналов и приёмников (signal-slot), когда каждый виджет (widget - искуственно образованное слово от слов window и gadget) при действии с ним посылает сигналы, а виджеты, настроенные на обработку данного сигнала(приёмники) непосредственно обрабатывают данный сигнал.
В библиотеке Qt используется концепция сигналов и приёмников (signal-slot), когда каждый виджет (widget - искуственно образованное слово от слов window и gadget) при действии с ним посылает сигналы, а виджеты, настроенные на обработку данного сигнала(приёмники) непосредственно обрабатывают данный сигнал.
Дети любят тигра больше, чем Пржевальский лошадей. © Тимур Шаов.
Топик не читал, но внимательно просмотрел.
Топик не читал, но внимательно просмотрел.
Re: Библиотеки для Иксов
LinuxFocus.org
много интересного с примерами
много интересного с примерами
Re: Библиотеки для Иксов
(estarchak @ Воскресенье, 26 Июня 2005, 17:59) писал(а):Qt - бтблтоьека, разработанная фирмой TrollTech, является неотъемлимой частью проекта KDE.
Если уж говорить совсем точно, то QT не есть часть проекта KDE. KDE её использует и так сказать, жить без неё не может, но она никак не входит в состав КДЕ.
Свобода есть тонкая полоска между диктатурой и анархией.
---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Re: Библиотеки для Иксов
Спасибо за ссылочку. Сам недавно столкнулся с проблемой разработки кроссплатформенных приложений. Пока что использую Java (Swing, SWT) и GTK. Прочитаю док, и может что-нить изменется...
:thumbsup:
!!! БЕРИ ОТ ЖИЗНИ ВСЕ !!!
Re: Библиотеки для Иксов
Вот, немного причесал текст:
Ожидаем дополнений и корректив. В частности, необходимо дополнение про Gtk и lib-gnome, хотелось бы видеть пару абзацев про Motif etc.
Библиотеки для Иксов
Введение для начинающих
Создано 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: Библиотеки для Иксов
Так, практически всегда используется терминальная библиотека ncurses, а также библиотека zlib.
Далеко не всегда. часто - да.
Библиотека Gtk (и современная реализация ее - Gtk-2) написана на языке Си. Поэтому программирование для нее является намного более сложным делом, чем программирование для библиотеки Qt, написаной на Си++, и использующей классы и другие преимущества C++. Но существуют дополнительные библиотеки с суффиксом mm(gnomemm,gnomeuimm) которые предоставляют возможность писать на C++ для GNOME.
PS что писать про libgnome?
LibGnome provides the non-GUI backend for the GNOME environment.
И немедленно выпил.
Re: Библиотеки для Иксов
Это всё же несколько из категории вкуса и цвета. Я, кажется, даже на этом форуме видел людей, которым на си писать удобнее, чем на си++.Библиотека Gtk (и современная реализация ее - Gtk-2) написана на языке Си. Поэтому программирование для нее является намного более сложным делом, чем программирование для библиотеки Qt, написаной на Си++, и использующей классы и другие преимущества C++.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
- polachok
- Бывший модератор
- Сообщения: 2199
- Статус: главный форумный маргинал
- ОС: gnu/linux
- Контактная информация:
Re: Библиотеки для Иксов
ладно, замнем тему о простоте программирования.
Библиотека 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 - платформа будущего .
Блин, просто рекламный проспект какой-то получился...
Библиотека 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 - платформа будущего .
Блин, просто рекламный проспект какой-то получился...
И немедленно выпил.
Re: Библиотеки для Иксов
несколько модифицированная версия
http://www.posix.ru/desktop/libs_x/
http://www.posix.ru/desktop/libs_x/
Re: Библиотеки для Иксов
Угу. Пробежался глазами, опечаток умеренно много, через недельку вычитаю.
Re: Библиотеки для Иксов
Забыли осветить главное достоинство (и недостаток ) иксов. Иксы работают на основе сетевого протокола. Поэтому XLib может быть переписанна на любой язык (по вкусу)...Было дело я даже писал реализацию на Java...
Re: Библиотеки для Иксов
Раскройте кто-нибудь тему gtk-bindingов для других языков, в паре предложений.