You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从源码安装OpenCV 4.5.2时sudo make install报错找不到cuda.h

OpenCV 4.5.2源码安装sudo make install时cuda.h缺失问题解决

问题背景

已从GitHub克隆OpenCV及contrib仓库并切换至4.5.2标签,使用以下CMake参数完成配置:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON -D WITH_CUBLAS=ON \
-D WITH_TBB=ON -D WITH_V4L=ON \
-D WITH_QT=OFF -D WITH_OPENGL=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_cudacodec=OFF \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON\
-D OPENCV_ENABLE_NONFREE=ON -D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=ON -D HAVE_opencv_python3=ON\
-D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda ..

CUDA 11.4已安装,nvidia-smi和nvcc -V验证正常,make -j10编译成功,但执行sudo make install时出现错误:

opencv/modules/core/include/opencv2/core/private.cuda.hpp:59:12: fatal error: cuda.h: No such file or directory
   59 | #  include <cuda.h>
      |            ^~~~~~~~
compilation terminated.

CMake配置阶段已检测到CUDA:

-- Could NOT find CUDNN (missing: CUDNN_LIBRARY CUDNN_INCLUDE_DIR) (Required is at least version "7.5")
-- CUDA detected: 11.4
-- CUDA: Using CUDA_ARCH_BIN=3.5;3.7;5.0;5.2;6.0;6.1;7.0;7.5;8.0;8.6
-- CUDA NVCC target flags: -gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_52,code=sm_52;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-D_FORCE_INLINES

cuda.h头文件存在于/usr/local/cuda-11.4/include/cuda.h和/usr/local/cuda/include/cuda.h。

环境信息:

cmake version 3.27.6
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
kernel: 5.15.0-107-generic
NVIDIA-SMI 470.239.06   Driver Version: 470.239.06   CUDA Version: 11.4

解决方案

方法1:传递用户环境变量给sudo执行install

sudo默认会重置环境变量,导致编译器无法找到CUDA头文件路径。执行以下命令,将当前用户的环境变量传递给sudo进程:

sudo env PATH=$PATH CPATH=$CPATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH make install

方法2:重新CMake时显式指定CUDA include路径

在原CMake参数中添加-D CUDA_INCLUDE_DIRS=/usr/local/cuda/include,重新配置后再编译安装:

# 进入build目录,清理原有配置
rm -rf CMakeCache.txt CMakeFiles
# 重新执行cmake
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON -D WITH_CUBLAS=ON \
-D WITH_TBB=ON -D WITH_V4L=ON \
-D WITH_QT=OFF -D WITH_OPENGL=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_cudacodec=OFF \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON\
-D OPENCV_ENABLE_NONFREE=ON -D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=ON -D HAVE_opencv_python3=ON\
-D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-D CUDA_INCLUDE_DIRS=/usr/local/cuda/include ..
# 重新编译安装
make -j10
sudo make install

方法3:配置root用户的环境变量

编辑root用户的~/.bashrc文件,添加CUDA路径配置:

sudo nano ~root/.bashrc

添加以下内容:

export CPATH=/usr/local/cuda/include:$CPATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

保存后执行:

sudo source ~root/.bashrc
sudo make install

方法4:安装时显式指定include路径

执行install命令时直接通过CXXFLAGS传递CUDA include路径:

sudo make install CXXFLAGS="-I/usr/local/cuda/include"

内容的提问来源于stack exchange,提问作者Belal.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:37:24