Spec-Zone.ru › GTK 3.24

Компиляция библиотек GTK+

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

Настройка GTK+ на системах Unix-подобных

В этой главе рассматривается сборка и установка GTK+ на системах Unix и Unix-подобных, таких как Linux. Компиляция GTK+ на Microsoft Windows отличается по деталям и несколько сложнее в настройке, поскольку необходимые инструменты не включены в операционную систему.

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

На системах Unix-подобных GTK+ использует стандартную систему сборки GNU, используя autoconf для конфигурации пакетов и решения проблем переносимости, automake для создания make файлов, соответствующих стандартам кодирования GNU, и libtool для создания общих библиотек на нескольких платформах.

Если вы собираете GTK+ из распространяемых исходных пакетов, то вам не нужно устанавливать эти инструменты; необходимые части инструментов уже включены в исходные пакеты. Но полезно немного узнать о том, как работают пакеты, использующие эти инструменты. Исходный пакет распространяется как tar.bz2 или tar.xz файл, который вы распаковываете в каталог, полном исходных файлов следующим образом:

      tar xvfj gtk+-3.2.0.tar.bz2
      tar xvfJ gtk+-3.2.0.tar.xz
    

В корневом каталоге, который создается, будет командный скрипт, называемый configure, который вы затем запускаете, чтобы взять шаблонные make файлы, называемые Makefile.in, в пакете и создать make файлы, настроенные для вашей операционной системы. Скрипт 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 текстовый файл устанавливается в стандартном расположении, который содержит флаги компиляции, необходимые для этой библиотеки, а также информацию о номере версии.)

  • Make файлы GTK+ в основном будут работать с различными версиями make, однако, есть несколько несовместимостей, поэтому команда GTK+ рекомендует установить GNU make, если у вас его еще нет на системе, и использовать его. (Он может называться gmake вместо make.)

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

  • Библиотека GLib предоставляет основные неграфические функции, такие как высокоуровневые типы данных, обработка Юникода и систему объектов и типов для программ C. Она доступна на сайте FTP GTK+ или здесь.

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

  • Pango — это библиотека для обработки текста с поддержкой различных языков. Она доступна здесь.

  • ATK — это Accessibility Toolkit. Он предоставляет набор универсальных интерфейсов, позволяющих технологиям доступности, таким как программы чтения с экрана, взаимодействовать с графическим интерфейсом пользователя. Он доступен здесь.

  • Gobject Introspection — это фреймворк для предоставления данных интроспекции языковым связкам. Она доступна здесь.

Внешние зависимости

  • Библиотека GNU libiconv необходима для сборки GLib, если на вашей системе нет функции iconv() для преобразования между кодировками символов. Большинство современных систем должны иметь iconv().

  • Библиотека libintl из пакета GNU gettext необходима, если на вашей системе нет функциональности gettext() для обработки баз данных перевода сообщений.

  • Библиотеки из системы окон X необходимы для сборки Pango и GTK+. Они уже должны быть установлены на вашей системе, но возможно, вам понадобится установить среду разработки для этих библиотек, предоставляемую вашим поставщиком операционной системы.

  • Библиотека fontconfig предоставляет Pango стандартный способ поиска шрифтов и их сопоставления с именами шрифтов.

  • Cairo — это библиотека графики, поддерживающая векторную графику и композицию изображений. Pango и GTK+ используют cairo для всех своих рисунков.

  • libepoxy — это библиотека, которая абстрагирует различия между различными библиотеками OpenGL. GTK+ использует ее для кроссплатформенной поддержки GL.

  • Библиотеки Wayland необходимы для сборки GTK+ с бэкэндом Wayland.

  • Пакет shared-mime-info не является обязательной зависимостью GTK+, но он содержит определения типов MIME, используемых GIO и косвенно GTK+. gdk-pixbuf будет использовать GIO для обнаружения типа MIME, если это возможно. Для этого shared-mime-info должен быть установлен, и XDG_DATA_DIRS соответствующим образом установлен во время конфигурации. В противном случае gdk-pixbuf использует встроенное обнаружение типа MIME.

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

Сначала убедитесь, что установлены необходимые внешние зависимости: pkg-config, GNU make, библиотеки JPEG, PNG и TIFF, FreeType, а также, при необходимости, libiconv и libintl. Для получения подробной информации о сборке этих пакетов, обратитесь к документации, предоставленной с самими пакетами. В системе Linux, скорее всего, у вас уже установлено всё, кроме pkg-config.

Затем соберете и установите библиотеки GTK+ в следующем порядке: GLib, Pango, ATK, затем GTK+. Для каждой библиотеки следуйте шагам configure, make, make install указанных выше. Если вам повезет, всё пройдёт гладко, и вы будете готовы начать компиляцию собственных приложений GTK+. Вы можете протестировать свою установку GTK+, запустив программу gtk3-demo, которая устанавливается вместе с GTK+.

Если один из configure скриптов завершится ошибкой или возникнут проблемы при запуске make, внимательно изучите сообщения об ошибках; они часто содержат полезную информацию о том, что пошло не так. Когда configure завершится с ошибкой, дополнительная информация, например, ошибки, возникшие во время тестовой компиляции, находится в файле config.log. Просмотр последних нескольких сотен строк этого файла часто позволит понять, что пошло не так. Если ничего не помогает, вы можете обратиться за помощью на почтовом списке gtk-list. Подробнее см. Почтовые списки и сообщения об ошибках(3).

Дополнительные параметры конфигурации

Помимо стандартных параметров, скрипт configure для библиотеки GTK+ поддерживает ряд дополнительных аргументов. (Аргументы командной строки для других библиотек GTK+ описаны в документации, поставляемой с этими библиотеками.)

configure [ --disable-modules | --enable-modules ] [[--with-included-immodules=MODULE1,MODULE2,...]] [ --enable-debug=[no/minimum/yes] ] [ --disable-Bsymbolic | --enable-Bsymbolic ] [ --disable-xkb | --enable-xkb ] [ --disable-xinerama | --enable-xinerama ] [ --disable-gtk-doc | --enable-gtk-doc ] [ --disable-cups | --enable-cups ] [ --disable-papi | --enable-papi ] [ --enable-xinput | --disable-xinput ] [ --enable-packagekit | --disable-packagekit ] [ --enable-x11-backend | --disable-x11-backend ] [ --enable-win32-backend | --disable-win32-backend ] [ --enable-quartz-backend | --disable-quartz-backend ] [ --enable-broadway-backend | --disable-broadway-backend ] [ --enable-wayland-backend | --disable-wayland-backend ] [ --enable-introspection=[no/auto/yes] ] [ --enable-installed-tests | --disable-installed-tests ]

--disable-modules и --enable-modules. Обычно GTK+ пытается скомпилировать модули методов ввода как небольшие динамические библиотеки, которые загружаются по мере необходимости. Аргумент --disable-modules указывает, что все они должны быть скомпилированы статически в библиотеку GTK+. Это полезно для людей, которым необходимо создавать статически скомпилированные двоичные файлы.

Если ни --disable-modules ни --enable-modules не указаны, скрипт configure попытается автоматически определить, поддерживает ли ваша система динамические модули.

--with-included-immodules. Этот параметр позволяет указать, какие модули методов ввода вы хотите включить непосредственно в общую библиотеку GTK+, а не как загружаемые модули.

--enable-debug. Включает различную поддержку отладки. Установка в 'no' отключает g_assert(), g_return_if_fail(), g_return_val_if_fail() и все проверки приведения типов между различными типами объектов. Установка в 'minimum' отключает только проверки приведения типов. Установка в 'yes' включает отладку во время выполнения. По умолчанию установлено значение 'minimum'. Обратите внимание, что 'no' быстро, но опасно, так как это может дестабилизировать даже относительно безошибочный программный код, изменяя эффект многих ошибок с простых предупреждений на фатальные сбои. Поэтому --enable-debug=no не следует использовать для стабильных релизов GTK+.

--disable-Bsymbolic и --enable-Bsymbolic. Параметр --disable-Bsymbolic отключает использование флага компоновщика -Bsymbolic-functions. Это необходимо только если вы хотите переопределить функции GTK+ с помощью LD_PRELOAD.

--enable-explicit-deps и --disable-explicit-deps. Если указан параметр --enable-explicit-deps, GTK+ запишет полный набор библиотек, от которых зависит GTK+, в свои файлы .pc, чтобы их использовать при компоновке программ, зависящих от GTK+. В противном случае GTK+ включит только собственные библиотеки GTK+ и будет полагаться на механизмы зависимости библиотек системы для загрузки других библиотек.

По умолчанию GTK+ отключит явные зависимости, если не обнаружит их необходимость в системе. (Если вы укажете --enable-static для принудительной сборки статических библиотек, явные зависимости будут записаны, так как зависимости библиотек не работают для статических библиотек.) Указание --enable-explicit-deps или --enable-static может вызвать проблемы совместимости, когда меняются версии библиотек, от которых зависит GTK+, и следует избегать этого, если возможно.

--disable-xkb и --enable-xkb. По умолчанию скрипт configure попытается автоматически определить, поддерживает ли расширение XKB библиотеки X, с которыми связан GTK+. Эти параметры позволяют явно управлять тем, будет ли GTK+ поддерживать расширение XKB.

--disable-xinerama и --enable-xinerama. По умолчанию скрипт configure попытается связаться с библиотеками Xinerama, если они найдены. Эти параметры позволяют явно управлять использованием Xinerama.

--disable-xinput и --enable-xinput. Управляет тем, будет ли GTK+ построен с поддержкой расширения XInput или XInput2. Эти расширения предоставляют расширенный интерфейс для устройств ввода, таких как графические планшеты. При включении этой поддержки специально написанные программы GTK+ могут получить доступ к субпиксельным позициям, нескольким одновременным устройствам ввода и дополнительным «осям», предоставляемым устройством, таким как данные о давлении и наклоне.

--disable-gtk-doc и --enable-gtk-doc. Для генерации справочной документации, включенной в GTK+, используется пакет gtk-doc. По умолчанию поддержка gtk-doc отключена, потому что для нее требуется установка различных дополнительных зависимостей. Если у вас установлен gtk-doc и вы изменяете GTK+, вы можете включить поддержку gtk-doc, передав --enable-gtk-doc. Если поддержка не включена, установятся предварительно сгенерированные HTML-файлы, поставляемые с GTK+.

--disable-cups и --enable-cups. По умолчанию скрипт configure попытается собрать бэкенд печати cups, если найдены библиотеки cups. Эти параметры позволяют явно управлять тем, должен ли быть собран бэкенд печати cups.

--disable-papi и --enable-papi. По умолчанию скрипт configure попытается собрать бэкенд печати papi, если найдены библиотеки papi. Эти параметры позволяют явно управлять тем, должен ли быть собран бэкенд печати papi.

--disable-packagekit и --enable-packagekit. По умолчанию скрипт configure попытается собрать поддержку PackageKit для диалога «Открыть с помощью», если найдены библиотеки PackageKit. Эти параметры позволяют явно управлять тем, должна ли быть собрана поддержка PackageKit.

--enable-x11-backend, --disable-x11-backend, --enable-win32-backend, --disable-win32-backend, --enable-quartz-backend, --disable-quartz-backend, --enable-broadway-backend, --disable-broadway-backend, --enable-wayland-backend, --disable-wayland-backend. Включает определенные бэкенды для GDK. Если ни один из этих параметров не указан, по умолчанию будет включён бэкенд x11, если платформа не Windows, в этом случае по умолчанию используется win32. Если какой-либо бэкенд явно включён или выключен, другие платформы не будут автоматически включены.

--enable-introspection. Сборка с поддержкой интроспекции или без неё. По умолчанию установлено значение 'auto'.

--enable-installed-tests или --disable-installed-tests. Устанавливать ли тесты в системе. При включении тесты и их данные устанавливаются в ${libexecdir}/gtk+/installed-tests. Метаданные для тестов устанавливаются в ${prefix}/share/installed-tests/gtk+. Для запуска установленных тестов можно использовать gnome-desktop-testing-runner.

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/gtk-building.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API