GTK+ Reference Manual |
||||
---|---|---|---|---|
Компилирование библиотеки GTK+Компилирование GTK+ библиотек Как самостоятельно скомпилировать GTK+ |
Эта глава рассказывает о сборке и установке GTK+ на UNIX и UNIX-like системах, таких как Linux. Компилирование GTK+ на Microsoft Windows отличается в деталях и немного сложнее, из за отсутствия некоторых необходимых инструментов в самой системе.
Прежде чем приступить к изучению деталей компилирования GTK+, мы должны упомянуть, что в большинстве случаев существуют готовые бинарные пакеты GTK+ собранные для вашей системы и доступны, либо вместе с приобретенной операционной системой, либо из независимых источников. Если такой набор пакетов доступен, то установка GTK+ проходит намного быстрее, чем при самостоятельной сборке. Фактически, GTK+ уже может быть установлена в вашей системе.
В UNIX-like системах GTK+ использует стандарт сборки системы GNU, используется autoconf для конфигурации пакетов и решения проблемы совместимости, automake для сборки makefiles который подчиняется стандарту кодирования системы GNU (GNU Coding Standards), а также libtool для сборки общедоступных библиотек на множестве платформ.
Если вы собираете GTK+ из дистрибутивного пакета исходных текстов, то вам не нужно инсталлировать эти инструменты; необходимые части инструментов уже включены в исходный пакет. Но необходимо немного знать о работе этих инструментов. Исходный пакет поставляется в виде tar.gz архива, который вы распаковываете в каталог содержащий полный комплект исходных файлов:
tar xvfz gtk+-2.0.0.tar.gz
В созданном, в результате распаковки, каталоге вы должны запустить сценарий командной оболочки configure который при выполнении использует шаблон makefiles названный Makefile.in для создания makefiles настроенного для вашей операционной системы. В скрипт configure можно передавать различные аргументы из командной строки, чтобы определить как пакет должен быть собран и установлен. Обычно полезен аргумент -- prefix,который определяет куда должен быть установлен пакет. Например, чтобы установить пакет в каталог /opt/gtk вы должны запустить configure так:
./configure --prefix=/opt/gtk
Полный список вариантов можно получить выполнив configure с аргументом --help. Вообще, как правило можно довериться установкам по умолчанию. После выполнения configure, вы должны выполнить команду make для сборки и установки пакета.
make
make install
Если вы не имеете достаточно прав для записи в корневой каталог, то вам могут потребоваться права root для выполнения make install. Кроме того, если вы устанавливаете в системный каталог, на некоторых системах (таких как Linux), вам может потребоваться выполнение ldconfig после make install,чтобы были найдены недавно установленные библиотеки.
Некоторые переменные окружения нужно установить до того, как будет выполнен configure. CPPFLAGS содержит варианты размещения C компилятора и используется для информирования о размещении заголовочных файлов. Переменная LDFLAGS используется таким же способом для компоновщика. Наконец переменная окруженияя PKG_CONFIG_PATH содержит путь к pkg-config (см. ниже) который используется для сборки программы с различными библиотеками. Если бы вы устанавливали GTK+ с такими зависимостями в каталог /opt/gtk, вы должны были бы установить эти переменные так:
CPPFLAGS="-I/opt/gtk/include"
LDFLAGS="-L/opt/gtk/lib"
PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
Вы также можете установить переменную окруженияя LD_LIBRARY_PATH, так динамический компоновщик системы сможет найти вновь установленные библиотеки, а также переменную окруженияя PATH, чтобы установленные наборы утилит и различные библиотеки были найдены.
LD_LIBRARY_PATH="/opt/gtk/lib"
PATH="/opt/gtk/bin:$PATH"
export LD_LIBRARY_PATH PATH
Прежде чем вы сможете собрать набор инструментов построения пользовательского интерфейса GTK+, в вашей системе должны быть установлены другие инструменты и библиотеки. Есть два инструмента которые нужны в течении процесса сборки (которые отличаются от инструментов используемых в создании GTK+ упомянутых выше, таких как autoconf), это pkg-config и GNU make.
Pkg-config инструмент отслеживания флагов компиляции, необходимых для библиотек которые использует GTK+. (Для каждой библиотеки, есть небольшой .pc текстовый файл установленный в стандартном месторасположении и содержащий флаги компиляции необходимые для этой библиотеки наряду с информацией о номере версии.) Версия pkg-config необходимая для сборки GTK+ отражена в справочнике dependencies на GTK+ FTP site.
GTK+ makefiles по большей части будет работать с различными версиями make, однако, есть тенденция некоторой несовместимости, поэтому команда разработчиков GTK+ рекомендует установить и использовать GNU make. (вызывается как gmake а не make.)
Команда разработчиков GTK+ поддерживает три библиотеки от которых зависит GTK+: GLib, Pango, и ATK. Другие библиотеки поддерживаются отдельно.
Библиотека GLib обеспечивает основные не графические (non-graphical) функции, такие как типы данных высокого уровня, манипуляции с Unicode, а также систему объектов и типов для C программ. Она доступна на GTK+ FTP site.
Pango библиотека интернациональной обработки текста. Доступна на GTK+ FTP site..
Библиотека ATK предлагает набор интерфейсов для поддержки доступа к приложениям и инструментам графических интерфейсов пользователя. С поддержкой интерфейсов ATK приложения и инструменты могут использоваться вместе с такими инструментами, как средства чтения экрана, лупы, устройства альтернативного ввода информации. Доступна на GTK+ FTP site.
Библиотека GNU libiconv library нужна для сборки GLib, если ваша система не имеет функции iconv(), для выполнения перекодировки символов. Большинство современных систем должны иметь iconv().
Библиотека libintl из пакета GNU gettext package нужна, если ваша система не имеет функции gettext() для обработки базы данных переведенных сообщений.
Библиотеки загрузки изображений JPEG, PNG и TIFF необходимы для сборки GTK+. Скорей всего у вас уже установлены эти библиотеки, в противном случае версии библиотек которые вам нужны содержатся в справочнике dependencies на GTK+ FTP site.. (Прежде чем устанавливать эти библиотеки из исходников, убедитесь что их нет в вашей системной поставке в собранном виде.)
Библиотеки X window system необходимы для сборки Pango и GTK+. Возможно вы уже установили их в вашу систему, но вам может понадобиться установить окруженияе для разработки этих библиотек, которой вас обеспечит поставщик вашей операционной системы.
Библиотека fontconfig предоставляет Pango стандартный путь определения расположения шрифтов и приводит в соответствие с местом расположения их имена.
Cairo графическая библиотека которая поддерживает векторную графику и композиционные изображения. И Pango и GTK+ используют cairo в большинстве случаев отрисовки виджетов.
Перед сборкой удостоверьтесь в том, что все внешние зависимости установлены: pkg-config, GNU make, JPEG, PNG и TIFF бмблиотеки, FreeType, а также, если необходимо, libiconv и libintl. Для получения детальной информации о сборке этих пакетов обратитесь к документации которой обеспечен каждый отдельный пакет. В операционной системе Linux все эти пакеты как правило уже установлены, за исключением pkg-config.
После этого соберите и установите библиотеку GTK+ в следующем порядке: GLib, Pango, ATK, GTK+. Для всех библиотек, выполняются следующие шаги configure, make, make install как упоминалось выше. Если вам повезёт, то всё пройдет гладко и вы сможете приступить к компиляции собственных программ на основе GTK+ (start compiling your own GTK+ applications). Вы можете протестировать свою инсталляцию запустив программу gtk-demo которую устанавливает GTK+.
Если один из скриптов configure или выполнение make закончится неудачей, внимательно изучите напечатанные сообщения об ошибках; они как правило содержат полезную информацию о том что пошло не так. Когда configure терпит неудачу, дополнительную информацию, такую как ошибки при тестовой компиляции, можно найти в файле config.log. Просмотр последних ста строк этого файла как правило даёт исчерпывающую информацию о том что произошло и что нужно делать. Если всё остальное тоже заканчивается ошибкой, вы можете обратится за помощью в gtk-list. Смотрите подробную информацию в Mailing lists and bug reports(3).
В дополнение к нормальным вариантам, скрипт configure для библиотеки GTK+ поддерживает множество дополнительных аргументов. (Аргументы командной строки для других библиотек описаны в документации к этим библиотекам.)
configure [[--disable-modules] | [--enable-modules]] [[--with-included-loaders==LOADER1,LOADER2,...]] [[--enable-debug=[no|minimum|yes]]] [[--disable-visibility] | [--enable-visibility]] [[--disable-shm] | [--enable-shm]] [[--disable-xim] | [--enable-xim]] [[--disable-xim-inst] | [--enable-xim-inst]] [[--disable-xkb] | [--enable-xkb]] [[--disable-gtk-doc] | [--enable-gtk-doc]] [[--with-xinput=[no|yes]]] [[--with-gdktarget=[x11|linux-fb|win32]]] [[--disable-shadowfb] | [--enable-shadowfb]]
--disable-modules and --enable-modules. Обычно GTK+ будет пробовать собрать загрузчик изображений GdkPixbuf как небольшие разделенные библиотеки, которые загружаются по требованию. Аргумент --disable-modules указывает, что все они должны быть собраны в GTK+ библиотеку, как статичные. Это полезно для людей нуждающихся в создании статично связанных двоичных файлов (statically-linked binaries). Если ни --disable-modules , ни --enable-modules не определены, то скрипт configure попытается автоматически определить как работают модули в вашей системе.
--with-included-loaders. Эта опция позволяет вам определить какой загрузчик изображений вы хотите включить; например, вы можете включить только загрузчик PNG для создания небольшого файла GdkPixbuf binary.
--enable-debug. Включает различную отладочную поддержку. Установка в 'no' отключает g_assert(), g_return_if_fail(), g_return_val_if_fail() и многие другие проверки приведения между различными типами объектов. Установка в 'minimum' отключает только проверку приведения типов. Установка в 'yes' включает runtime debugging. По умолчанию используется 'minimum'. Помните что режим 'no' быстр, но очень опасен, так как имеет тенденцию дестабилизировать даже программное обеспечение без ошибок изменяя эффект от простых предупреждений в фатальные аварии. Поэтому --enable-debug=no не должен использоваться для стабильных выпусков GTK+.
--disable-visibility и --enable-visibility. Опция --disable-visibility выключает использование видимых атрибутов ELF для оптимизации связей. Это имеет смысл, изменяя непосредственно GTK+, так как GTK+ используя видимые атрибуты вызывает полную пере-сборку всех исходных файлов с любой модификацией заголовочного файла.
--enable-explicit-deps и --disable-explicit-deps. Если --enable-explicit-deps определена, то GTK+ будет записывать полный набор библиотек от которых зависит в .pc файлы, которые используют программы зависящие от связи с GTK+. Иначе, GTK+ включит непосредственно GTK+ библиотеки и будет зависеть от системы обслуживания зависимостей библиотек включающей другие библиотеки. По умолчанию GTK+ будет отключать явные зависимости если не обнаружит что они нужны в системе. (Если определено --enable-static вынуждая сборку статических библиотек, то когда зависимости будут записаны явно, так как зависимости библиотек не работают для статических библиотек.) Определение --enable-explicit-deps или --enable-static может вызвать проблемы совместимости, когда библиотеки зависят от изменения их версии и нужно, если возможно, избегать этого.
--disable-shm и --enable-shm. Эти опции могут использоваться для контроля использования совместной памяти, используемой GTK+ для общения с X server когда это возможно. По умолчанию 'yes'.
--disable-xim and --enable-xim. Эти опции контролируют компиляцию GTK+ с поддержкой XIM. (X Input Method extension, используется для Japanese ввода.) По умолчанию yes.
--disable-xim-inst and --enable-xim-inst. Эти опции определяют, будет ли GTK+ использовать XIM иллюстрируя примерами обратный вызов. По умолчанию 'yes', если система установленная в компьютере не Solaris, где XRegisterIMInstantiateCallback() кажется вызывает segfault.
--disable-xkb and --enable-xkb. По умолчанию скрипт configure попытается автоматически определить поддерживается или нет расширение XKB библиотеками X libraries с которыми связана GTK+. Эти опции могут быть использованы для явного управления поддержкой библиотекой GTK+ расширения XKB.
--disable-gtk-doc и --enable-gtk-doc. Пакет gtk-doc используется для генерации справочной документации включённой в GTK+. По умолчанию поддержка пакета gtk-doc отключена, потому что он требует установки расширенных зависимостей. Если вы хотите установить gtk-doc и модифицировать GTK+, вы можете включить поддержку gtk-doc опцией --enable-gtk-doc. Если вы не хотите включать эту поддержку, то вместе с GTK+ будут установлены предварительно сгенерированные файлы документации в HTML формате.
--with-xinput. Контролирует собран ли GTK+ с поддержкой расширения XInput. Расширение XInput обеспечивает интерфейс для усовершенствованных устройств ввода, таких как графический планшет (graphics tablets). Когда компиляция выполнена с этой поддержкой, в специально созданных GTK+ программах может появится доступ к меж-точечному расположению (subpixel positions), множеству устройств одновременного ввода и дополнительной информации об устройстве, такой как степень наклона пера и сила давления. Это хорошо работает в системе XFree86 systems, хотя другие системы тоже имеют это расширение.
--with-gdktarget. Переключение между поддержкой окончаний для GDK. По умолчанию x11, если платформа не Windows, иначе по умолчанию win32.
--disable-shadowfb и --enable-shadowfb. Переключение теней framebuffer, поддерживается linux-fb.