Вопрос или проблема
Я хочу собрать ffmpeg с поддержкой кодека av1 на CentOS 7.
Я начинаю, следуя инструкциям здесь:
git clone https://aomedia.googlesource.com/aom
mkdir aom_build
cd aom_build
cmake ../aom
make
sudo make install
Это записывает файл в /usr/local/lib64/pkgconfig/aom.pc
.
Когда я позже клонирую репозиторий ffmpeg и пытаюсь запустить ./configure --enable-libaom ...
, он жалуется, что pkg-config не может найти файл aom.pc.
Это связано с тем, что если я запущу pkg-config --variable pc_path pkg-config
, я вижу, что pkg-config проверяет только здесь:
/usr/lib64/pkgconfig:/usr/share/pkgconfig
Он не ищет в /usr/local/lib64/pkgconfig
, где находится aom.pc. Пожалуй, единственное решение, которое я придумал, это запустить вместо этого в каталоге git ffmpeg:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH/usr/local/lib64/pkgconfig: ./configure --enable-libaom ...
Это работает, но я бы предпочел просто сказать libaom, чтобы он записывал aom.pc в /usr/lib64/pkgconfig с самого начала.
Есть ли какой-либо способ, при сборке aom, указать cmake или make записать файл aom.pc в /usr/lib64/pkgconfig вместо /usr/local/lib64/pkgconfig?
В других проектах, где есть шаг ./configure
, я видел, что это можно указать с помощью ./configure --pkgconfigdir=/usr/lib64/pkgconfig
, но в проекте aom нет скрипта ./configure
, поэтому я не знаю, что делать в этом случае.
Вы бы хотели запустить пользовательский cmake
для libaom что-то вроде этого:
cmake .. -DCMAKE_INSTALL_PREFIX="./extra_ff_mods" -DCMAKE_INSTALL_LIBDIR=lib
make
make install
Это поместит файлы в папку с названием extra_ff_mods
, которая будет содержать следующие подпапки:
- include
|
- lib
|
- pkgconfig
Вы можете изменить папку назначения по мере необходимости.
Ответ или решение
Чтобы указать путь для pkg-config при компиляции с использованием CMake, нужно учитывать несколько параметров, связанных с настройкой пути установки файлов конфигурации pkg-config, в частности, при сборке библиотеки aom для поддержки кодека AV1 на CentOS 7. Давайте рассмотрим процесс пошагово.
Шаг 1: Клонирование и сборка aom
Сначала вы клонируете репозиторий и создаете каталог для сборки:
git clone https://aomedia.googlesource.com/aom
mkdir aom_build
cd aom_build
Шаг 2: Настройка CMake
Когда вы запускаете cmake
для сборки библиотеки, вам нужно указать, где должны устанавливаться файлы конфигурации pkg-config, такие как aom.pc
. Это можно сделать с помощью параметра CMAKE_INSTALL_PREFIX
.
Вы можете указать путь, в котором будут установлены все файлы (в том числе и файлы .pc), с помощью следующей команды:
cmake ../aom -DCMAKE_INSTALL_PREFIX=/usr/lib64
Шаг 3: Сборка и установка
После того как CMake настроен, выполните сборку и установку:
make
sudo make install
Это создаст необходимые файлы в /usr/lib64/pkgconfig
, который является путём, проверяемым pkg-config по умолчанию.
Шаг 4: Проверка установки
Проверьте, находится ли файл aom.pc
в нужной директории:
ls /usr/lib64/pkgconfig/aom.pc
Если файл существует, вы готовы продолжить и выполнить конфигурацию ffmpeg.
Альтернативный метод: Установка в пользовательский каталог
Если вы не хотите или не можете установить библиотеку в /usr/lib64
, вы можете добавить путь aom.pc
к переменной PKG_CONFIG_PATH
, как вы уже делали:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig ./configure --enable-libaom ...
Однако, такой подход менее предпочтителен, так как может привести к путанице и усложнениям при управлении пакетами.
Подводя итоги
В заключение, чтобы правильно указать путь для pkg-config при использовании CMake, рекомендуется использовать опцию -DCMAKE_INSTALL_PREFIX
с указанием желаемого пути. Это обеспечит корректное размещение файлов конфигурации и упростит дальнейшую работу с проектами, зависящими от вашей библиотеки.