Проблема
Я собираю библиотеку глубокого обучения Caffe в Ubuntu 14.04 (64 бит).
OpenCV (Version: 2.4.8+dfsg1-2ubuntu1
) устанавливается с сервера пакетов ubuntu с помощью:
sudo apt-get install libopencv-dev
Скомпилируйте Caffe
с помощью CMake 2.8.
Ошибка связи:
Связывание исполняемого cXX CXX -
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.8: undefined ссылка на `[email protected]_4.0 '
детали
Кажется, некоторые символы библиотеки TIFF не найдены. Я приложил некоторые усилия, чтобы найти причину (без везения). Вот некоторая информация о библиотеках.
Библиотека TIFF, связанная libopencv_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)
Импортировать символы libopencv_highgui.so.2.4.8
$readelf -s libopencv_highgui.so.2.4.8 | grep TIFFOpen
62: 0000000000000000 0 FUNC GLOBAL DEFAULT UND [email protected]_4.0 (9)
Примечание. В именах символов есть один @
.
$nm -D libopencv_highgui.so.2.4.8 | grep TIFFOpen
U TIFFOpen
Экспорт символов libtiff.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 12 TIFFOpen @@LIBTIFF_4.0
Примечание. В именах символов есть два @
(@@
).
Мое замешательство
- Это потому, что
libtiff.so.5
имеет@@
в именах символов вместо@
, которые сделали ошибку привязкиlibopencv_highgui.so.2.4.8: undefined ссылка на '[email protected]_4.0'
- В чем разница между
@
и@@
в именах символов? - Что означает суффикс
LIBTIFF_4.0
имен символов вlibtiff.so.5
? - Многие говорили об этом, потому что OpenCV нуждался в
libtiff4-dev
, который не предоставляется Ubuntu 14.04. Тогда почему ребята из Ubuntu помещают сломанный пакет на сервер пакетов. - Как решить проблему связывания?
Я не профессия по компиляции и связыванию. Извините за такой длинный пост. Просто, чтобы предоставить достаточно информации для вас, ребята, чтобы помочь мне. Оцените любые предложения.
P.S. Если вам нужна дополнительная информация об этих libs, не стесняйтесь говорить в комментарии.