Итак, я вручную установил последнее ffmpeg некоторое время назад, потому что для одного из моих проектов нужны последние библиотеки .55 ffmpeg (я думаю, что я использовал это: https://trac.ffmpeg.org/wiki/UbuntuCompilationGuide). Итак, теперь в / usr / local / lib у меня есть:
/usr/local/lib/libavcodec.a /usr/local/lib/libavcodec.so
/usr/local/lib/libavcodec.so.55 /usr/local/lib/libavcodec.so.55.38.101
Проблема в том, что в / usr / lib / x86_64-linux-gnu у меня есть:
/usr/lib/x86_64-linux-gnu/libavcodec.a /usr/lib/x86_64-linux-gnu/libavcodec.so.53
/usr/lib/x86_64-linux-gnu/libavcodec.so /usr/lib/x86_64-linux-gnu/libavcodec.so.53.35.0
Когда я компилирую свой код, я получаю эту ошибку компоновщика:
/usr/bin/ld: warning: libavcodec.so.55, needed by /usr/local/lib/libopencv_highgui.so, may conflict with libavcodec.so.53
/usr/bin/ld: obj/h264_decoder.o: undefined reference to symbol 'avcodec_free_frame@@LIBAVCODEC_55'
/usr/bin/ld: note: 'avcodec_free_frame@@LIBAVCODEC_55' is defined in DSO /usr/local/lib/libavcodec.so.55 so try adding it to the linker command line
/usr/local/lib/libavcodec.so.55: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
Если я избавлюсь от файлов конфликтующей библиотеки в / usr / lib / x86_64-linux-gnu, тогда мой код компилируется с помощью нет ошибок. Однако тогда другие программы (например, проигрыватель фильмов) перестают работать. Каков наилучший способ решить эту проблему?