最近尝试运行一下yolov8的官方cpp
需要从源码构建一下opencv,记录一下遇到的问题

CMake Error at modules/dnn/CMakeLists.txt:52 (message):
  DNN: CUDA backend requires cuDNN.  Please resolve dependency or disable
  OPENCV_DNN_CUDA=OFF

我已经安装了cudnn,于是我去相对应的路径找

第一步:确认 libcudnn.so 是否存在并被系统识别
检查动态库是否存在:

ls /usr/local/cuda/lib64/libcudnn*

你应该看到类似文件:

/usr/local/cuda/lib64/libcudnn.so
/usr/local/cuda/lib64/libcudnn.so.8
/usr/local/cuda/lib64/libcudnn.so.8.8.1

如果没有这些文件,请回到你解压的 cuDNN 包目录中复制它们:

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
sudo ldconfig

✅ 第二步:确认是否能找到 cuDNN 库

bash
深色版本

ldconfig -p | grep cudnn

你应该看到类似输出:

libcudnn.so.8 (libc6,x86-64) => /usr/local/cuda/lib64/libcudnn.so.8
libcudnn.so (libc6,x86-64) => /usr/local/cuda/lib64/libcudnn.so

如果没有看到,请确保你执行了 sudo ldconfig。

我的都能看见,说明可能是我cmake的时候,路径没指明白
于是

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D WITH_CUDA=ON \
      -D ENABLE_FAST_MATH=ON \
      -D CUDA_FAST_MATH=ON \
      -D WITH_CUDNN=ON \
      -D OPENCV_DNN_CUDA=ON \
      -D BUILD_opencv_dnn=ON \
      -D OPENCV_EXTRA_MODULES_PATH=/home/columbus/hlz/opencv/opencv_contrib-4.8.1/modules \
      -D CUDA_ARCH_BIN="75" \
      -D CMAKE_C_COMPILER=/usr/bin/gcc-9 \
      -D CMAKE_CXX_COMPILER=/usr/bin/g++-9 \
      -D CUDNN_INCLUDE_DIR=/usr/local/cuda/include \
      -D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so \
      ..

编译通过

然后就是 cmake make
最后运行成功请添加图片描述

更多推荐