Error de enlace con `libopencv_highgui.so` en Ubuntu 14.04, resultado extraño con` libtiff.so.5`
Estoy compilando la biblioteca de aprendizaje profundoCafe en Ubuntu 14.04 (64 bit).
OpenCV (Version: 2.4.8+dfsg1-2ubuntu1
) se instala desde el servidor de paquetes ubuntu con:
sudo apt-get install libopencv-dev
CompilarCaffe
con CMake 2.8.
Error de enlace:
Vinculación de CXX ejecutable caffe-
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.8: referencia indefinida a `TIFFOpen@LIBTIFF_4.0 '
InformaciónParece que no se encontraron algunos símbolos de la biblioteca TIFF. Hice un esfuerzo para encontrar la razón (sin suerte). Aquí hay información sobre las 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 FUNC GLOBAL DEFAULT UNDTIFFOpen@LIBTIFF_4.0 (9)
Nota: Hay un solo@
en los nombres de los 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 FUNC GLOBAL DEFAULT 12TIFFOpen @@ LIBTIFF_4.0
Nota: Hay dos@
(@@
) en los nombres de los símbolos.
libtiff.so.5
tiene@@
en los nombres de los símbolos en lugar de@
que hizo el error de vinculaciónlibopencv_highgui.so.2.4.8: referencia indefinida a 'TIFFIsTiled@LIBTIFF_4.0'
Cuál es la diferencia entre@
y@@
en nombres de símbolos?¿Cuál es el significado del sufijo?LIBTIFF_4.0
de nombres de símbolos enlibtiff.so.5
?Mucha gente dijo que es porque OpenCV necesitalibtiff4-dev
que no es proporcionado por Ubuntu 14.04. Entonces, ¿por qué los chicos de Ubuntu pusieron un paquete roto en el servidor de paquetes?¿Cómo resolver el problema de vinculación?No soy una profesión en compilar y vincular. Disculpa por la larga publicación. Justo qué proporcionar suficiente información para que me ayuden. Agradezco cualquier sugerencia.
PD Si necesita más información de esas bibliotecas, no dude en decirlo en el comentario.