Scenariu
Întâmpin unele probleme la construirea celei mai recente versiuni a bazei de coduri de contribuție a OpenCV din sursă, dar problema ar putea sta la baza unei lipse mai generice de profunzime din partea mea:
Preluând eticheta 4.5.4 din depozitele oficiale, folosesc instrucțiunile de construire în conformitate cu instrucțiuni oficiale pentru construirea OpenCV cu baza sa de cod de contribuție de aici, pe când de atunci în prezent, cel mai recent OpenCV necesită libtiff versiunea 4, Folosesc indicatorul cmake menționat aici pentru construirea libtiff versiunea 4 în sine ca parte a versiunii OpenCV â, astfel încât versiunea OpenCV să folosească libtiff 4 și nu biblioteca și anteturile implicite Ubuntu 20.04 libtiff versiunea 5.
Cu toate acestea, la un anumit moment al versiunii OpenCV, se pare că o bibliotecă nu reușește să găsească simbolurile libtiff versiunea 4, și anume biblioteca liblept
:
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFReadDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFGetFieldDefaulted@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFCleanup@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFIsTiled@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFReadRGBAImageOriented@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFOpen@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFSetSubDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFSetField@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFCurrentDirOffset@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFWriteScanline@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFPrintDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFGetField@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFScanlineSize@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFSetWarningHandler@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFSetErrorHandler@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFSetDirectory@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFReadScanline@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFClose@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFClientOpen@LIBTIFF_4.0'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/liblept.so.5: referință nedefinită la `TIFFGetVersion@LIBTIFF_4.0'
Obțin următoarea ieșire pentru această bibliotecă â
$ ldd /usr/lib/x86_64-linux-gnu/liblept.so.5
.
.
.
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f40034c6000)
într-adevăr, am instalat libtiff5:
$ apt list libtiff*
libtiff-dev/focal-updates,focal-security, acum 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 all
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, acum 4.1.0+git191117-2ubuntu0.20.04.2 amd64 [instalat]
libtiff5/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
libtiffxx5/focal-updates,focal-security, acum 4.1.0+git191117-2ubuntu0.20.04.2 amd64 [instalat, automat]
libtiffxx5/focal-updates,focal-security 4.1.0+git191117-2ubuntu0.20.04.2 i386
In cautarea Aici, sunt puțin nedumerit de tabelul care arată cerințele versiunii libtiff5 ca 4.8.3.
Întrebare
Înseamnă asta că construirea pe sistemul meu este (în măsura în care ldd
comanda poate implica) încercarea de a lega liblept5 cu libtiff5, când încearcă să rezolve acele simboluri libtiff4? Sau încearcă să le rezolve dinamic și, prin urmare, nu reușește să rezolve, deoarece sistemul meu nu are libtiff4 disponibil la nivel global pentru linker?
Informații suplimentare despre versiune
- Ubuntu 20.04
- cma face 3.16.3
- GNU Make 4.2.1
- gcc 9.3.0