Problem: When trying to setup tesseract after installing leponica (please see the steps to reproduce section below) I get following error message at "make" command run.
CXXLD tesseract
/usr/bin/ld: src/tesseract-tesseract.o: in function `main':
tesseract.cpp:(.text.startup+0xdd): undefined reference to `setMsgSeverity'
/usr/bin/ld: tesseract.cpp:(.text.startup+0x296): undefined reference to `getLeptonicaVersion'
/usr/bin/ld: tesseract.cpp:(.text.startup+0x2b7): undefined reference to `lept_free'
/usr/bin/ld: tesseract.cpp:(.text.startup+0x2bc): undefined reference to `getImagelibVersions'
/usr/bin/ld: tesseract.cpp:(.text.startup+0x2dd): undefined reference to `lept_free'
/usr/bin/ld: tesseract.cpp:(.text.startup+0x966): undefined reference to `setMsgSeverity'
/usr/bin/ld: tesseract.cpp:(.text.startup+0x143e): undefined reference to `pixRead'
/usr/bin/ld: tesseract.cpp:(.text.startup+0x14d7): undefined reference to `pixDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxaCreate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `l_generateCIDataForPdf'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixWriteMem'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxaGetBox'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixAnd'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRotateOrth'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetXRes'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixReadTiff'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixReadMem'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRenderPolyline'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixInvert'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixClipBoxToForeground'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaAddBox'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSubtract'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetYRes'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetAllArbitrary'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `ptaDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixConnComp'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaGetPix'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixReadMemTiff'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetHeight'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaDisplayTiledInColumns'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixOr'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `ptaAddPt'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `l_CIDataDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaAddPix'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxCreate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixReduceRankBinaryCascade'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetData'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `numaDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixReadFromMultipageTiff'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixCopy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixConvertTo8'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixForegroundFraction'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGenerateCIData'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRotate180'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxaDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixCountConnComp'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetDimensions'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixClipRectangle'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixConvertTo32'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixDilateBrick'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetOrClearBorder'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxaReplaceBox'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxaAddBox'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaGetCount'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixClone'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetSpp'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixCreateTemplate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixReadMemFromMultipageTiff'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetAll'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxaGetBoxGeometry'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetYRes'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRasterop'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixCountPixels'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxaGetCount'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetText'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `numaGetCount'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixExpandReplicate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRenderBoxArb'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaCreate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `bmfCreate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaGetBox'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetInRect'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetDepth'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixOtsuAdaptiveThreshold'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixClearInRect'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetPixel'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaClear'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixCreate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSauvolaBinarizeTiled'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixCountPixelsByRow'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetInputFormat'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixCloseBrick'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaConvertToPdf'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixOpenBrick'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxGetGeometry'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetMasked'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `l_getFormattedDate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetWpl'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRemoveColormap'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixBlockconv'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `composeRGBPixel'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixWrite'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetWidth'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixErodeBrick'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixZero'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `boxSetGeometry'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRenderPolylineArb'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixaReplacePix'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `bmfDestroy'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixDistanceFunction'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetColormap'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixRemoveAlpha'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGenerateHalftoneMask'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `findFileFormat'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `zlibCompress'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixGetXRes'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixScale'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetPixel'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `numaGetIValue'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSeedfillBinary'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `ptaCreate'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixConvert24To32'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixAddSingleTextblock'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `findFileFormatBuffer'
/usr/bin/ld: ./.libs/libtesseract.so: undefined reference to `pixSetSpp'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:4481: tesseract] Error 1
make[1]: Leaving directory '/opt/tesseract/tesseract-5.3.3'
make: *** [Makefile:8199: all-recursive] Error 1
Reference material used to troubleshoot this issue http://www.leptonica.org/source/README.html
https://github.com/cesco345/OpenCV-With-the-ODROID-XU4Q/blob/master/opencv_installation.txt
Steps to reproduce
- Just as a summary, I am trying to create this environment using docker container on my windows laptop using WSL.
- I have tried both redhat and ubuntu docker images and both give similar error as above.
- Various documentations and installation steps found online are for older versions of leptonica and not much of help.
- I have tried to compile setup steps from different online tutorials or sources so not too sure about what exactly all of them do.
Command to run docker container
docker container run -v /mnt/d/:/mnt -it --rm redhat/ubi9:latest
Installing required packages inside container once started
yum install gcc-c++
yum install -y libtool autoconf automake libpng-devel libtiff-devel libwebp-devel openjpeg2 libjpeg-devel libjpeg-turbo giflib zlib-devel libarchive libcurl-devel
yum install sudo
sudo dnf install wget
sudo yum install zip unzip
yum install autoconf-archive
wget https://github.com/DanBloomberg/leptonica/releases/download/1.84.1/leptonica-1.84.1.tar.gz
mv leptonica-1.84.1.tar.gz ./opt/tesseract
gunzip leptonica-1.84.1.tar.gz
tar -xvf leptonica-1.84.1.tar
cd leptonica-1.84.1
mkdir build
cd build
../configure
make
sudo make install
make -j4 check
cd /opt/tesseract/
wget https://github.com/tesseract-ocr/tesseract/archive/refs/tags/5.3.3.tar.gz
gunzip 5.3.3.tar.gz
tar -xvf 5.3.3.tar
rm 5.3.3.tar
cd tesseract-5.3.3/
export LEPTONICA_CFLAGS="-I/usr/local/include/leptonica"
export LEPTONICA_LIBS="-L/usr/local/lib/"
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
export CXXFLAGS="-I/usr/include -I/usr/include/libpng16 -I/usr/include/leptonica -lpng -ljpeg -lz"
export LDFLAGS="-L/usr/lib"
export LIBLEPT_HEADERSDIR="/usr/include/leptonica"
./autogen.sh
LIBLEPT_HEADERSDIR=/usr/local/include/leptonica ./configure --prefix=/usr/local/ --with-extra-libraries=/usr/local/lib
make
sudo make install (yet to be done since the make step is where its failing)