pkgconf

Программа для настройки флагов компилятора и линковщика для библиотек разработки. Она является совместимой, но функционально расширенной заменой классической pkg-config из freedesktop.org. Включает библиотеку libpkgconf, предоставляющую доступ к функциональности pkgconf для интеграции в другие инструменты, такие как компиляторы и IDE.

Особенности

  • полная совместимость с существующими файлами .pc и большинством опций оригинальной pkg-config;
  • построение плоского ориентированного графа зависимостей для более эффективного разрешения связей и оптимизации флагов линковки, что помогает избежать избыточного связывания;
  • улучшенный алгоритм решения зависимостей, оптимизированный для работы с графами;
  • библиотека libpkgconf со стабильным ABI и API для создания привязок и встраивания функциональности pkgconf в сторонние инструменты сборки и IDE;
  • поддержка кросс-компиляции через переменные окружения PKG_CONFIG_SYSROOT_DIR и механизмы переопределения префиксов (--define-prefix);
  • возможность фильтрации системных путей включения и библиотек (PKG_CONFIG_SYSTEM_INCLUDE_PATH, PKG_CONFIG_SYSTEM_LIBRARY_PATH) для более точного контроля над выводимыми флагами.

Основные компоненты

pkgconf состоит из утилиты командной строки и библиотеки libpkgconf (подробнее с документацией можно ознакомиться здесь).

Утилита командной строки

Основной интерфейс для пользователей и систем сборки. Позволяет запрашивать флаги компиляции и линковки, проверять версии библиотек, а также получать детальную информацию о зависимостях.

Основные функции утилиты:

  • Получение флагов компиляции: pkgconf --cflags library возвращает флаги, необходимые для компиляции с использованием указанной библиотеки (например, -I/usr/include/library);
  • Получение флагов линковки: pkgconf --libs library возвращает флаги для линковки (например, -L/usr/lib -llibrary);
  • Проверка существования и версии библиотеки: pkgconf --exists library, pkgconf --atleast-version 1.0 library. Эти опции используются в скриптах configure для проверки зависимостей;
  • Работа со статической линковкой: Опция --static заставляет pkgconf включать флаги из Requires.private и Libs.private, которые необходимы для статической сборки;
  • Визуализация зависимостей: Опция --digraph генерирует представление графа зависимостей в формате Graphviz (DOT), что полезно для отладки и анализа.

Библиотека libpkgconf

libpkgconf предоставляет программный интерфейс для выполнения всех операций, доступных в утилите командной строки. Это позволяет интегрировать логику разрешения зависимостей и генерации флагов непосредственно в инструменты разработки.

Ключевые возможности библиотеки:

  • загрузка и парсинг файлов .pc;
  • построение и анализ графа зависимостей с учётом версий и конфликтов;
  • предоставление фрагментов флагов (CFLAGS, LDFLAGS) с возможностью фильтрации системных путей;
  • поддержка различных режимов работы (shared/static, кросс-компиляция).

Управление файлами .pc и переменные окружения

pkgconf ищет файлы с метаданными (с расширением .pc) в директориях, заданных через переменные окружения. Эти файлы содержат информацию о версии библиотеки, её зависимостях, флагах компиляции и линковки.

Ключевые переменные окружения:

  • PKG_CONFIG_PATH — список дополнительных директорий для поиска .pc файлов;
  • PKG_CONFIG_LIBDIR — список основных директорий для поиска .pc файлов (переопределяет встроенные пути по умолчанию);
  • PKG_CONFIG_SYSROOT_DIR — префикс корневой системы (sysroot), добавляемый к путям из .pc файлов при кросс-компиляции;
  • PKG_CONFIG_SYSTEM_INCLUDE_PATH и PKG_CONFIG_SYSTEM_LIBRARY_PATH — списки системных путей, которые по умолчанию игнорируются при выводе флагов (расширение pkgconf);
  • PKG_CONFIG_DISABLE_UNINSTALLED — запрещает использование .pc файлов, помеченных как uninstalled.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "pkgconf/2.2.0@aurora",
    )    

Процесс локальной сборки описан в документации.

pkgconf

package compiler and linker metadata toolkit
Лицензия
ISC
Версия
Домашняя страница
Скачать
armv8
50.33 Kb
MD5: 7733de5d3c555fdc80d544c4f014f052
Updated: 03.09.2025, 17:07:07
armv7
45.25 Kb
MD5: 54ce677716c9449371698e116d663752
Updated: 03.09.2025, 17:07:19
x86_64
50.2 Kb
MD5: ffbbe961d37972547a28f1b23b72f0ee
Updated: 03.09.2025, 17:07:23
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.