Conflito de bibliotecas em / usr / local / lib e / usr / lib / x86_64-linux-gnu

2

Então eu instalei manualmente o ffmpeg mais recente, porque um dos meus projetos precisa das últimas bibliotecas ffmpeg .55 (acho que usei isso: link ). Então agora em / usr / local / lib, eu tenho:

/usr/local/lib/libavcodec.a  /usr/local/lib/libavcodec.so
/usr/local/lib/libavcodec.so.55  /usr/local/lib/libavcodec.so.55.38.101

O problema é que em / usr / lib / x86_64-linux-gnu, eu tenho:

/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

Quando eu compilo meu código, recebo este erro de vinculador:

/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

Se eu me livrar dos arquivos de biblioteca conflitantes em / usr / lib / x86_64-linux-gnu, meu código será compilado sem erros. No entanto, outros programas (por exemplo, o Movie Player) param de funcionar. Qual é a melhor maneira de resolver este problema?

    
por t2k32316 18.11.2013 / 04:39

1 resposta

1

Não tenho certeza se essa é a melhor correção, mas acabei de adicionar:

-L/usr/local/lib/

para meus sinalizadores de linker (logo após eu incluir as bibliotecas de opencv por link ) e ele efetivamente se livrou do erro.

    
por t2k32316 20.11.2013 / 05:38