Prev

Up

Home

GTK+ Reference Manual

Next

Компилирование библиотеки GTK+

Компилирование GTK+ библиотек Как самостоятельно скомпилировать GTK+

Сборка GTK+ на UNIX-like системах

Эта глава рассказывает о сборке и установке 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.

Команда разработчиков GTK+ поддерживает три библиотеки от которых зависит GTK+: GLib, Pango, и ATK. Другие библиотеки поддерживаются отдельно.

Сборка и тестирование GTK+

Перед сборкой удостоверьтесь в том, что все внешние зависимости установлены: 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.