Рейтинг:0

Ошибка связывания сборки OpenCV Contrib 4.5.4 с LibTiff4

флаг af

Сценарий

У меня возникли проблемы с созданием последней версии кодовой базы 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
Рейтинг:0
флаг af

Эта проблема не воспроизводится при использовании OpenCV 4.2.0 для Ubuntu 20.04. Проблема сверху не возникает там. Вам также часто нужно помнить об использовании â

судо ldconfig

После установки libs, если вы ожидаете сборки против них.

Тем не менее, мне интересно, можно ли рассмотреть последнее предложение моего вопроса, чтобы способствовать более точному пониманию в таком контексте, как тот, который изложен в заданном вопросе.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.