Ubuntu 20.04下CMake无法找到cuDNN,编译GPU版OpenCV-python遇阻
解决CMake编译OpenCV时找不到cuDNN的问题
核心原因
PyTorch、TensorFlow对cuDNN的识别逻辑和CMake不同,当前问题大概率是CMake无法自动定位到cuDNN的安装路径,导致配置阶段报错。
具体解决步骤
1. 手动指定cuDNN路径到CMake命令
在原有CMake命令中添加cuDNN相关路径参数,根据你的安装方式替换对应路径:
- 若通过deb包安装cuDNN,默认路径为
/usr/include(头文件)和/usr/lib/x86_64-linux-gnu(库文件) - 若为解压手动安装,路径通常是
/usr/local/cuda/include和/usr/local/cuda/lib64
修改后的CMake命令示例:
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 \ -D CUDA_ARCH_BIN=7.5 \ -D WITH_CUBLAS=1 \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D HAVE_opencv_python3=ON \ -D PYTHON_EXECUTABLE=/usr/bin/python3 \ -D BUILD_EXAMPLES=ON \ -D WITH_GSTREAMER=ON \ -D CUDNN_INCLUDE_DIR=/usr/local/cuda/include \ -D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.8.9 \ -D CUDNN_VERSION=8.9 ..
2. 配置环境变量让CMake识别路径
终端执行以下命令临时生效:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export CMAKE_PREFIX_PATH=/usr/local/cuda:$CMAKE_PREFIX_PATH
如需永久生效,将上述两行添加到~/.bashrc或~/.zshrc文件末尾,再执行source ~/.bashrc刷新环境。
3. 验证cuDNN安装完整性
检查关键文件是否存在:
# 检查头文件 ls /usr/local/cuda/include/cudnn*.h # 检查库文件 ls /usr/local/cuda/lib64/libcudnn*.so*
若文件缺失,重新下载对应版本的cuDNN并完成安装(deb包直接安装,解压包需手动将头文件和库文件复制到CUDA目录)。
4. 清理CMake缓存后重新配置
若之前已执行过CMake,先清理缓存再重新运行命令:
cd 你的OpenCV编译目录 rm -rf CMakeCache.txt CMakeFiles/ # 重新执行修改后的CMake命令
内容的提问来源于stack exchange,提问作者Richzrich
相关产品推荐
相关产品推荐

