Сценарий
У меня возникли проблемы с созданием последней версии кодовой базы OpenCV contrib из исходного кода, но проблема может просто лежать в основе более общего отсутствия глубины с моей стороны:
Извлекая тег 4.5.4 из официальных репозиториев, я использую инструкции по сборке в соответствии с официальные инструкции по сборке OpenCV с его исходной кодовой базой отсюда, тогда как в настоящее время для последней версии OpenCV требуется libtiff версии 4, я использую упомянутый там флаг cmake для сборки самой libtiff версии 4 как части сборки OpenCV, чтобы сборка OpenCV использовала libtiff 4, а не стандартную библиотеку и заголовки Ubuntu 20.04 libtiff версии 5.
Тем не менее, в определенный момент в сборке OpenCV кажется, что одна библиотека не может найти символы libtiff версии 4, а именно библиотека любовь
:
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFReadDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFGetFieldDefaulted@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFCleanup@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFIsTiled@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFReadRGBAImageOriented@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFOpen@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFSetSubDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFSetField@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFCurrentDirOffset@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFWriteScanline@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFPrintDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFGetField@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFScanlineSize@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFSetWarningHandler@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFSetErrorHandler@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFSetDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFReadScanline@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFClose@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFClientOpen@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: неопределенная ссылка на `TIFFGetVersion@LIBTIFF_4.0'
Я получаю следующий вывод для этой библиотеки
$ ldd /usr/lib/x86_64-linux-gnu/liblept.so.5
.
.
.
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f40034c6000)
действительно у меня установлен libtiff5:
$ подходящий список libtiff*
libtiff-dev/focal-updates,focal-security,теперь 4.1.0+git191117-2ubuntu0.20.04.2 amd64
libtiff-dev/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
libtiff-doc/focal-updates,focal-updates,focal-security,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 все
libtiff-opengl/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 amd64
libtiff-opengl/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
libtiff-tools/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 amd64
libtiff-tools/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
libtiff5-dev/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 amd64
libtiff5-dev/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
libtiff5/focal-updates,focal-security,теперь 4.1.0+git191117-2ubuntu0.20.04.2 amd64 [установлен]
libtiff5/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
libtiffxx5/focal-updates,focal-security,теперь 4.1.0+git191117-2ubuntu0.20.04.2 amd64 [установлено, автоматически]
libtiffxx5/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
Смотрящий здесь, я просто немного озадачен таблицей, показывающей требования к версии libtiff5 как 4.8.3.
Вопрос
Означает ли это, что сборка в моей системе (насколько лдд
команда может означать) попытка связать liblept5 с libtiff5 при попытке разрешить эти символы libtiff4? Или он пытается разрешить их динамически и, таким образом, не может разрешить, поскольку в моей системе нет глобально доступной для компоновщика libtiff4?
Дополнительная информация о версии
- Убунту 20.04
- cmake 3.16.3
- GNU Сделать 4.2.1
- gcc 9.3.0