Работа с библиотеками

При компиляции программы просмотра мы уже убедились, что использование библиотек не вызывает никаких затруднений. В командной строке записывается ключ --pkg, после которого перечисляются требуемые библиотеки. Строго говоря, это не сами библиотеки, а vapi-файлы, о которых я уже говорил. Например, для нашего примера:

valac --pkg gtk+-2.0 text-file-viewer.vala

в программе будут использованы все определения из файла gtk+-2.0.vapi, а также все пакеты (библиотеки), от которых зависит gtk+-2.0. Если такие зависимости существуют, то они перечисляются в файле gtk+-2.0.deps. Всю остальную работу по подключению необходимых C-библиотек компилятор Vala выполняет автоматически, без нашего вмешательства.

С созданием собственных библиотек дело обстоит гораздо сложнее. Мы уже выяснили, что с технической точки зрения "библиотека Vala" означает "C-библиотека". Таким образом, в действительности вам придётся создавать библиотечный файл языка C. Это можно сделать двумя способами. Первый – это получение объектных файлов из исходных кодов Vala с помощью ключа компилятора -c (компилировать, но не связывать):

vala -c <список_vala-файлов>

и последующим использованием системных утилит обслуживания библиотечных файлов ar или комплекта для создания динамических библиотек libtool. Например:

ar rc <имя_библиотеки> <полученные_объектные_файлы>

Второй способ предполагает генерацию промежуточного C-кода (в предыдущей статье мы уже пользовались ключом -C):

valac -C <список_vala-файлов>

и компиляцию полученных после этого файлов с целью получения динамических (shared) библиотек:

gcc -o my-library.so --shared -fPIC <список_полученных_С-файлов>

Здесь ключ -fPIC позволяет сгенерировать позиционно-независимый код (Position-Independent Code), который необходим для создания динамически связываемой библиотеки.

Обзор штатных инструментальных средств и утилит

В дистрибутивный пакет Vala помимо компилятора, который мы уже рассмотрели достаточно подробно, включены следующие полезные программы.

vala-gen-introspect – инструмент для извлечения метаинформации о библиотеках, основанных на GObject. Эта информация может использоваться для создания vapi-файлов, т. е. для привязки библиотеки с целью применения её в Vala-программах. Имя библиотеки должно быть задано в формате pkg-config.

vapigen – создаёт vapi-файлы с помощью метаинформации о библиотеках и прочей дополнительной информации.

vala-gen-project – простая графическая среда для создания Vala-проекта. Созданный в ней проект будет содержать скрипты генерации программ с помощью auto-инструментов (autoconf, automake и проч.), которые могут послужить основой для построения более сложной системы.

Справочную информацию об этих утилитах и о компиляторе можно получить из соответствующих man-страниц.

Заключение

В дистрибутивный пакет Vala помимо компилятора, который мы уже рассмотрели достаточно подробно, включены следующие полезные программы.

vala-gen-introspect – инструмент для извлечения метаинформации о библиотеках, основанных на GObject. Эта информация может использоваться для создания vapi-файлов, т. е. для привязки библиотеки с целью применения её в Vala-программах. Имя библиотеки должно быть задано в формате pkg-config.

vapigen – создаёт vapi-файлы с помощью метаинформации о библиотеках и прочей дополнительной информации.

vala-gen-project – простая графическая среда для создания Vala-проекта. Созданный в ней проект будет содержать скрипты генерации программ с помощью auto-инструментов (autoconf, automake и проч.), которые могут послужить основой для построения более сложной системы.

Справочную информацию об этих утилитах и о компиляторе можно получить из соответствующих man-страниц.

Last updated