ОШИБКА: dav1d ›= 0.2.1 не найден с помощью pkg-config

Я пытаюсь создать ffmpeg с dav1d. Я успешно построил davit, используя следующие команды:

git clone --depth=1 https://code.videolan.org/videolan/dav1d.git && \
cd dav1d && \
mkdir build && cd build && \
meson .. && \
ninja

После этого я запускаю команду config для FFmpeg и получаю сообщение об ошибке:

PKG_CONFIG_PATH="/app/ffmpeg_build/lib/pkgconfig" ./configure \
    --prefix="/app/ffmpeg_build" \
    --pkg-config-flags="--static" \
    --extra-cflags="-I/app/ffmpeg_build/include" \
    --extra-ldflags="-L/app/ffmpeg_build/lib" \
    --extra-libs="-lpthread -lm" \
    --bindir="/usr/local/bin" \
    --enable-gpl \
    --enable-libass \
    --enable-libmp3lame \
    --enable-libfreetype \
    --enable-libopus \
    --enable-libvorbis \
    --enable-libx264 \
    --enable-libdav1d \
    --enable-nonfree

(Все остальные библиотеки установлены, и FFmpeg правильно настраивает и строит с ними, если я опускаю --enable-libdav1d, но в случае вышеуказанной команды я получаю):

ERROR: dav1d >= 0.2.1 not found using pkg-config

Я думаю, причина может быть в том, что мезон помещает файлы bin не в тот каталог. Может ли кто-нибудь помочь?

P.S. Я использую Ubuntu 18.04.

Пример команд сборки для других библиотек:

git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
cd x264 && \
PKG_CONFIG_PATH="/app/ffmpeg_build/lib/pkgconfig" ./configure --prefix="/app/ffmpeg_build" --bindir="/usr/local/bin" --enable-static --enable-pic && \
make && \
make install

person Dmitry Maksakov    schedule 23.04.2020    source источник
comment
Отсутствует путь к файлу конфигурации пакета = dav1d.pc: Допустим, sudo ninja install к / usr / local / .... Вы можете сделать sudo cp /usr/local/lib/pkgconfig/dav1d.pc /usr/lib/pkgconfig/ .... Или скопировать из dav1d/build/meson-private/dav1d.pc   -  person Knud Larsen    schedule 23.04.2020
comment
sudo ninja install сделал трюк. Спасибо, Кнуд!   -  person Dmitry Maksakov    schedule 23.04.2020


Ответы (1)


Для прохождения сборки необходимо добавить ninja install:

git clone --depth=1 https://code.videolan.org/videolan/dav1d.git && \
cd dav1d && \
mkdir build && cd build && \
meson --bindir="/usr/local/bin" .. && \
ninja && \
ninja install

Но этого недостаточно, если вы запустите FFmpeg после, вы получите:

ffmpeg: error while loading shared libraries: libdav1d.so.4: cannot open shared object file: No such file or directory

Чтобы исправить эту проблему, добавьте /usr/local/lib/x86_64-linux-gnu в LD_LIBRARY_PATH:

export LD_LIBRARY_PATH+=":/usr/local/lib/x86_64-linux-gnu"
person Dmitry Maksakov    schedule 23.04.2020
comment
вы также можете добавить --default-library=static в вызов meson и избежать обновления LD_LIBRARY_PATH - person Kostis; 21.10.2020