Конфликтующие библиотеки в / usr / local / lib и / usr / lib / x86_64-linux-gnu

Так что я вручную установил последнюю версию 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, то мой код компилируется без ошибок. Однако тогда другие программы (например, Movie Player) перестают работать. Как лучше всего решить эту проблему?

2
задан 18 November 2013 в 07:39

1 ответ

Не уверен, что это лучшее решение, но я просто добавил:

-L/usr/local/lib/

к своим флагам компоновщика (сразу после того, как я включил библиотеки для opencv в https://stackoverflow.com / a / 15975490/229311 ), и это эффективно избавило от ошибки.

0
ответ дан 18 November 2013 в 07:39

Другие вопросы по тегам:

Похожие вопросы: