【踩坑】找不到 /usr/bin/ld: cannot find -lopencv_dnn ...等问题和opencv+opencv_contrib联合安装遇到的问题

这篇博客总结了在Linux环境下,使用opencv-4.4.0和opencv_contrib-4.4.0进行联合安装时遇到的问题及解决方案,包括找不到文件或目录、编译时头文件错误、darknet make报错等,并提供了cmake配置、make时的参数设置以及环境变量配置的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

g++ 编译cpp程序出现类似如下等问题。解决办法是使用opencv+opencv_contrib联合安装。

/usr/bin/ld: cannot find -lopencv_dnn
/usr/bin/ld: cannot find -lopencv_ml
/usr/bin/ld: cannot find -lopencv_shape
/usr/bin/ld: cannot find -lopencv_stitching
/usr/bin/ld: cannot find -lopencv_cudafeatures2d
/usr/bin/ld: cannot find -lopencv_superres
/usr/bin/ld: cannot find -lopencv_cudacodec
/usr/bin/ld: cannot find -lopencv_videostab
/usr/bin/ld: cannot find -lopencv_cudaoptflow
/usr/bin/ld: cannot find -lopencv_cudalegacy
/usr/bin/ld: cannot find -lopencv_calib3d
/usr/bin/ld: cannot find -lopencv_features2d

安装过程中遇到一些问题,找到一些解决办法,亲测可用。这里结合本人操作实际汇总一下。

我用的是opencv-4.4.0和opencv_contrib-4.4.0,大家查找文件时按照自己对应的目录就行了。建议将文件夹名称的-4.4.0去掉,便于各种版本通用移植。

问题1:报错:没有那个文件或目录

编译OpenCV提示opencv_contrib缺少boostdesc_bgm.i等文件

解决方法:

查看 build 文件夹下的日志文件 CMakeDownloadLog.txt,在日志文件CMakeDownloadLog.txt中搜索 boostdesc_bgm.i 关键词。日志文件里就有它的下载地址,到指定位置下载即可。

如果找不到也没关

<think>好的,我现在需要解决用户遇到的编译错误:'fatal error: opencv2/opencv_modules.hpp: No such file or directory',特别是在OpenCV 4.1.0版本中。首先,我得理解这个错误的原因。这个头文件通常是在编译OpenCV时自动生成的,所以如果不到,可能是在编译过程中某些步骤出了问题,或者配置不正确。 根据用户提供的引用内容,特别是引用[1]、[3][5],这些案例都是关于缺少头文件的解决方法。比如,引用[1]提到复制features2d文件夹到指定位置,引用[3]是关于设置CMake路径,引用[5]是安装缺失的Python头文件numpy库。可能这个opencv_modules.hpp的问题也是类似的,需要检查编译过程是否正确生成该文件,或者路径是否被正确设置。 首先,我应该考虑用户是否正确执行了CMake配置。opencv_modules.hpp是在编译阶段生成的,通常在build目录下的modules目录里。用户可能在编译时没有正确配置CMake,导致该文件没有被生成或者没有被正确安装。需要确认用户在CMake时是否启用了必要的模块,特别是如果使用了contrib模块的话,是否正确指定了OPENCV_EXTRA_MODULES_PATH,因为在引用[1]中提到需要复制某些模块的文件夹,这可能涉及到contrib模块的配置。 另外,引用[3]中提到的设置OpenCV_DIR、INCLUDE_DIRSLIBRARIES的路径可能也是关键。用户可能在项目中引用了错误的OpenCV路径,导致编译器不到生成的头文件。需要检查CMakeLists.txt中的设置,确保指向正确的构建目录。 还有可能用户在编译OpenCV时没有完成全部步骤,比如执行了cmake但未执行make install,或者安装路径不正确,导致头文件没有被正确复制到系统目录中。需要确认用户是否成功完成了整个编译安装流程,或者是否在安装后没有更新环境变量,使得项目不到安装的头文件。 此外,类似引用[5]中的问题,用户可能需要安装一些依赖项,比如Python开发包或numpy,虽然opencv_modules.hpp的问题可能不直接相关,但依赖项缺失可能导致编译过程中断,从而影响该文件的生成。需要检查编译OpenCV时的日志,确认是否有其他错误导致生成过程中断。 综合这些可能性,我应该建议用户按照以下步骤排查:首先确认OpenCV编译安装是否完整;其次检查CMake配置是否正确指向构建目录;然后确保contrib模块配置正确(如果使用的话);最后验证项目中的路径设置是否正确。可能还需要清理构建目录并重新编译,确保生成的文件完整。</think>### 解决方案:编译错误`opencv2/opencv_modules.hpp: No such file or directory` 此错误通常由 **OpenCV 编译配置不完整** 或 **项目路径设置错误** 导致。以下是分步解决方法: --- #### 1. **确保 OpenCV 编译完整** `opencv_modules.hpp` 是 OpenCV 编译时自动生成的文件,若编译流程未完成或配置错误,会导致该文件缺失。 - **重新生成构建目录**: ```bash cd opencv-4.1.0 rm -rf build # 清理旧构建 mkdir build && cd build ``` - **完整执行 CMake 配置**: 确保启用 `OPENCV_GENERATE_PKGCONFIG=ON` 以生成必要的配置文件[^3]: ```bash cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.0/modules .. # 若使用 contrib 模块 ``` **注意**:若使用了 `opencv_contrib` 模块,需通过 `-D OPENCV_EXTRA_MODULES_PATH` 指定其路径[^1]。 - **重新编译并安装**: ```bash make -j$(nproc) sudo make install ``` --- #### 2. **检查项目 CMake 配置** 若 OpenCV 编译成功,但项目中仍报错,需验证项目 CMake 是否指向正确的 OpenCV 路径。 - **在 CMakeLists.txt 中明确指定路径**: ```cmake set(OpenCV_DIR "/path/to/opencv-4.1.0/build") # 替换为实际构建目录 find_package(OpenCV 4.1 REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) ``` 引用[3]中通过设置 `OpenCV_DIR` 解决了类似路径问题--- #### 3. **验证头文件是否存在** 手动检查 `opencv_modules.hpp` 是否生成: -OpenCV 构建目录中查: ```bash find /path/to/opencv-4.1.0/build -name "opencv_modules.hpp" ``` 正常路径应为:`build/modules/core/include/opencv2/opencv_modules.hpp`。 --- #### 4. **处理依赖缺失问题** 若编译 OpenCV 时依赖库缺失,可能导致生成文件不完整: - **安装基础依赖**: ```bash sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config ``` - **安装 Python 开发库**(如需 Python 绑定): ```bash sudo apt-get install python3-dev python3-numpy # 参考引用[5] ``` --- ### 相关问题 1. **如何检查 OpenCV 版本是否安装成功?** ```bash pkg-config --modversion opencv4 ``` 2. **CMake 不到 OpenCV 时如何强制指定路径?** 在 CMake 命令中直接指定路径: ```bash cmake -D OpenCV_DIR=/path/to/opencv/build .. ``` 3. **编译 OpenCV 时如何跳过某些模块以减少错误?** 通过 `-DBUILD_opencv_<模块名>=OFF` 禁用模块,例如: ```bash -DBUILD_opencv_dnn=OFF ``` --- ### 总结 此错误的核心是 **OpenCV 编译流程未正确生成头文件** 或 **项目路径配置错误**。通过重新编译 OpenCV、验证 CMake 配置,并确保依赖完整,可解决问题[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北溟客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值