Erro de conexão com `libopencv_highgui.so` no Ubuntu 14.04, resultado estranho com` libtiff.so.5`
Estou compilando a biblioteca de aprendizado profundoCaffe no Ubuntu 14.04 (64 bits).
OpenCV (Version: 2.4.8+dfsg1-2ubuntu1
) é instalado a partir do servidor de pacotes ubuntu com:
sudo apt-get install libopencv-dev
CompilarCaffe
com o CMake 2.8.
Erro de vinculação:
Vinculação de café executável CXX
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.8: referência indefinida para `TIFFOpen@LIBTIFF_4.0 '
InformaçõesParece que alguns símbolos da biblioteca TIFF não foram encontrados. Fiz um esforço para encontrar o motivo (sem sorte). Aqui estão algumas informações sobre as bibliotecas.
Biblioteca TIFF vinculada porlibopencv_highgui.so.2.4.8
$ ldd libopencv_highgui.so.2.4.8 | grep tiff
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f978313b000)
Importar símbolos delibopencv_highgui.so.2.4.8
$ readelf -s libopencv_highgui.so.2.4.8 | grep TIFFOpen
62: 0000000000000000 0 PADRÃO GLOBAL FUNC UNDTIFFOpen@LIBTIFF_4.0 (9)
Nota: Existe um único@
nos nomes dos símbolos.
$ nm -D libopencv_highgui.so.2.4.8 | grep TIFFOpen
U TIFFOpen
Exportar símbolos delibtiff.so.5
:
$ nm -D /usr/lib/x86_64-linux-gnu/libtiff.so.5
0000000000000000 A LIBTIFF_4.0
...
00000000000429f0 T TIFFOpen
...
$ readelf -s /usr/lib/x86_64-linux-gnu/libtiff.so.5|grep TIFFOpen
99: 00000000000429f0 239 PADRÃO GLOBAL FUNC 12TIFFOpen @@ LIBTIFF_4.0
Nota: Existem dois@
(@@
) nos nomes dos símbolos.
libtiff.so.5
tem@@
nos nomes dos símbolos em vez de@
que cometeu o erro de vinculaçãolibopencv_highgui.so.2.4.8: referência indefinida a 'TIFFIsTiled@LIBTIFF_4.0'
Qual é a diferença entre@
e@@
em nomes de símbolos?Qual é o significado do sufixoLIBTIFF_4.0
de nomes de símbolos emlibtiff.so.5
?Muitas pessoas disseram que é porque o OpenCV precisalibtiff4-dev
que não é fornecido pelo Ubuntu 14.04. Então, por que os caras do Ubuntu colocaram um pacote quebrado no servidor de pacotes?Como resolver o problema de vinculação?Eu não sou uma profissão em compilar e vincular. Desculpe por um post tão longo. Exatamente o que fornecer informações suficientes para vocês me ajudarem. Agradecemos todas as sugestões.
P.S. Se você precisar de mais informações sobre essas bibliotecas, fique à vontade para dizer no comentário.