Я сталкиваюсь со следующей ошибкой при запуске приложения:
./Application: /lib/x86_64-linux-gnu/libavutil-ffmpeg.so.54: version `LIBAVUTIL_FFMPEG_54' not found (required by /usr/local/lib/libopencv_videoio.so.3.3)
./Application: /lib/x86_64-linux-gnu/libswscale-ffmpeg.so.3: version `LIBSWSCALE_FFMPEG_3' not found (required by /usr/local/lib/libopencv_videoio.so.3.3)
./Application: /lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.56: version `LIBAVCODEC_FFMPEG_56' not found (required by /usr/local/lib/libopencv_videoio.so.3.3)
./Application: /lib/x86_64-linux-gnu/libavformat-ffmpeg.so.56: version `LIBAVFORMAT_FFMPEG_56' not found (required by /usr/local/lib/libopencv_videoio.so.3.3)
ffmpeg
ffmpeg version 4.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (Ubuntu 8.3.0-6ubuntu1)
configuration: --enable-shared
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
ldd $ (который ffmpeg), кажется, в порядке:
linux-vdso.so.1 (0x00007ffc726da000)
libavdevice.so.58 => /usr/local/lib/libavdevice.so.58 (0x00007feed0645000)
libavfilter.so.7 => /usr/local/lib/libavfilter.so.7 (0x00007feed0374000)
libavformat.so.58 => /usr/local/lib/libavformat.so.58 (0x00007feed012a000)
libavcodec.so.58 => /usr/local/lib/libavcodec.so.58 (0x00007feecec71000)
libswresample.so.3 => /usr/local/lib/libswresample.so.3 (0x00007feecec53000)
libswscale.so.5 => /usr/local/lib/libswscale.so.5 (0x00007feecebc7000)
libavutil.so.56 => /usr/local/lib/libavutil.so.56 (0x00007feeceabd000)
libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007feece96f000)
libpthread.so.0 => /usr/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007feece94e000)
libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007feece763000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007feece73a000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007feece735000)
libxcb-shape.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007feece72e000)
libxcb-xfixes.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007feece724000)
libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007feece708000)
liblzma.so.5 => /usr/lib/x86_64-linux-gnu/liblzma.so.5 (0x00007feece6e1000)
/lib64/ld-linux-x86-64.so.2 (0x00007feed06ca000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007feece4dd000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007feece2d5000)
libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007feece2bb000)
librt.so.1 => /usr/lib/x86_64-linux-gnu/librt.so.1 (0x00007feece2b0000)
У кого-нибудь есть идеи, как это обойти?
Проблемы:
.so
файлы в неправильном месте. Ваше приложение ищет /lib/x86_64-linux-gnu/libavutil-ffmpeg.so.54
, и т.д., но Ваш FFmpeg, вероятно, только обеспечивает /usr/local/lib/libavutil.so.56
.libavutil-ffmpeg
старая схема именования, используемая ffmpeg пакетом в старых версиях Ubuntu.54
и 56
представьте основные версии каждой библиотеки FFmpeg. Основными версиями не является API, совместимый друг с другом. Приложение похоже на него, был записан для ответвления выпуска FFmpeg 2.8 согласно Вашим номерам основной версии. Это очень старо. Вы скомпилировали и установили FFmpeg 4.2. Или обновите код приложения для использования ответвления выпуска FFmpeg 4.2 или FFmpeg 2.8 установки вместо этого.Спасибо @llogan! Это был ideed, как Вы объясняете.
Решение: Я удалил всю старую библиотеку, и имейте загрузку точно каждый .deb пакет необходимого .lib из репозитория Ubuntu, и установил их вручную.