Ubuntu 20.04环境下CMake项目集成Tesseract与OpenCV的编译故障求助
解决Ubuntu 20.04下Tesseract+OpenCV CMake编译报错
l_int32未定义问题 我之前也遇到过几乎一模一样的问题,核心原因是系统自带的Leptonica库和你源码编译的Tesseract版本不兼容,而且pkgconfig默认优先找系统路径的库,导致编译时引入了错误的头文件版本。下面是我亲测有效的解决步骤:
1. 彻底清理系统自带的冲突依赖
首先把系统预装的Tesseract和Leptonica全删掉,避免版本混乱:
sudo apt remove --purge libtesseract-dev libleptonica-dev sudo apt autoremove sudo apt clean
2. 重新编译安装兼容版本的Leptonica
Tesseract 4.1.1需要Leptonica 1.79及以上版本,我推荐用1.82.0(兼容性最好):
git clone https://github.com/DanBloomberg/leptonica.git cd leptonica git checkout 1.82.0 mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. make -j$(nproc) # 用全部CPU核心加速编译 sudo make install
3. 重新编译Tesseract,强制链接新安装的Leptonica
这一步要确保Tesseract找到我们刚装的Leptonica,而不是系统残留的旧版本:
git clone https://github.com/tesseract-ocr/tesseract.git cd tesseract git checkout 4.1.1 mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DLeptonica_DIR=/usr/local/lib/cmake/leptonica .. make -j$(nproc) sudo make install sudo ldconfig # 更新系统库缓存,让新库生效
4. 修改CMakeLists.txt,正确配置依赖
放弃用pkgconfig,直接用find_package指定路径,避免路径优先级问题:
# 先配置OpenCV(如果你之前的OpenCV配置没问题的话) find_package(OpenCV REQUIRED) # 明确指定Leptonica和Tesseract的CMake配置文件路径 find_package(Leptonica REQUIRED PATHS /usr/local/lib/cmake/leptonica) find_package(Tesseract REQUIRED PATHS /usr/local/lib/cmake/tesseract) # 包含头文件(顺序不重要,CMake会处理依赖关系) include_directories(${OpenCV_INCLUDE_DIRS}) include_directories(${LEPTONICA_INCLUDE_DIRS}) include_directories(${TESSERACT_INCLUDE_DIRS}) # 替换成你的项目目标和源文件 add_executable(your_project_name main.cpp) # 链接所有依赖库 target_link_libraries(your_project_name ${OpenCV_LIBS} ${TESSERACT_LIBRARIES} ${LEPTONICA_LIBRARIES} )
为什么之前的方法无效?
- 你用pkgconfig时,系统优先找到了
/usr/include下的旧版Leptonica头文件,而不是你源码编译的/usr/local/include版本,导致类型定义不匹配(l_int32在旧版里可能是u_int32_t的别名,或者根本没定义) - 手动加头文件路径时,没有清理旧依赖,编译时还是会优先用系统路径的文件
- 自定义CMake文件时,可能没正确指定库的链接路径,导致链接阶段出错
额外检查项
如果还是报错,运行CMake时仔细看输出日志,确认:
-- Found Leptonica: /usr/local/lib/libleptonica.so(路径是/usr/local而不是/usr)-- Found Tesseract: /usr/local/lib/libtesseract.so
内容的提问来源于stack exchange,提问作者Keivan
相关产品推荐
相关产品推荐

