Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

pkg-config

Контекст pkg-config — утилита, которая отдаёт сборочной системе флаги компиляции и линковки для установленных библиотек на основе их *.pc‑файлов. Сама библиотека публикует свой метаданный файл (например, /usr/lib/pkgconfig/openssl.pc), где указаны версия, пути и зависимости. Для SCA это один из немногих мест в C/C++, где у системной библиотеки есть задекларированная версия на этапе конфигурации сборки.

Для чего

pkg-config отвечает на вопрос «какие -I, -L, -l нужны, чтобы собрать против библиотеки X, и какой она версии». Он читает *.pc‑файлы из путей PKG_CONFIG_PATH, разрешает транзитивные Requires: и выдаёт согласованный набор флагов. В инвентаризации он полезен как источник задекларированной версии и графа межбиблиотечных зависимостей до сборки.

Как применяют

Получить версию и флаги библиотеки:

pkg-config --modversion openssl        # → 3.2.1
pkg-config --cflags --libs openssl     # → -I/usr/include  -lssl -lcrypto
pkg-config --print-requires gtk+-3.0   # транзитивные Requires

Пример *.pc‑файла, который читает утилита:

# /usr/lib/x86_64-linux-gnu/pkgconfig/openssl.pc
Name: OpenSSL
Version: 3.2.1
Requires.private: libssl libcrypto
Libs: -L${libdir} -lssl -lcrypto

Version: и Requires отсюда дают версию и связи компонента ещё до того, как соберётся бинарь.

Сильные стороны

Ограничения

Offline / on-premise

Да. pkg-config полностью локален: читает *.pc‑файлы из файловой системы и ничего не скачивает. Работает в любом закрытом контуре, где установлены dev‑пакеты библиотек; сетевого доступа не требует.

Связанные темы

М09 C/C++ legacy · П19. C C++ make build inventory · П22. ELF dynamic dependencies · П24. PURL нормализация и private qualifiers · CMake · qmake · ldd readelf LIEF