所以要切换nvcccc 的CUDA 版本

发布时间:2025-06-24 18:37:07  作者:北方职教升学中心  阅读量:824


输出显卡信息。

#include<iostream>#include<opencv2//opencv.hpp>  int main(){    std::cout << cv::getBuildInformation() << std::endl;     system("pause");    return 0;}。

opencv/opencv: Open Source Computer Vision Library。

所以要切换nvcccc 的CUDA 版本。

sample。

cmake将打印安装信息: 

make。

find_package(CUDA REQUIRED)set(CMAKE_CXX_FLAGS "-Wno-deprecated-enum-enum-conversion")add_executable(helloocv Main.cpp)include_directories(/home/work/dl_work/xuchunyuan/xcyssd/opencv/opencv-4.10.0/include/opencv4)file(GLOB OPENCV_LIBRARIES "/home/work/dl_work/xuchunyuan/xcyssd/opencv/opencv-4.10.0/lib/*.so")target_link_libraries(helloocv ${OPENCV_LIBRARIES})file(GLOB CUDA_LIBRARIES "/usr/local/cuda/lib64/*.so")target_link_libraries(helloocv ${CUDA_LIBRARIES})# tag: Install binariesinstall(TARGETS helloocv EXPORT helloocv COMPONENT samples DESTINATION samples/bin)。

cmake。也可以安装在ssd目录下(但是,

在12.4之后切换cuda libcudnn也不能使用.so.8要用9。

opencv-4.10.0。一开始,升级cuda版本也可以是succes󿀌我从cuda-11.5开始就犯了这样的错误。

/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with ‘...’: 530 | operator=(_Functor&& __f) | ^ /usr/include/c++/11/bits/std_function.h:530:146: note: ‘_ArgTypes’CMake Error at cuda_compile_1_generated_gpu_mat.cu.o.RELEASE.cmake:282 (message): Error generating file /home/work/dl_work/xuchunyuan/xcyssd/opencv/opencv-4.10.0/build/modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/./cuda_compile_1_generated_gpu_mat.cu.omake[2]: *** [modules/core/CMakeFiles/opencv_core.dir/build.make:77: modules/core/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_gpu_mat.cu.o] Error 1make[1]: *** [CMakeFiles/Makefile2:4133: modules/core/CMakeFiles/opencv_core.dir/all] Error 2make: *** [Makefile:166: all] Error 2。

3.关于CMAKE_INSTALL_PREFIX,usr//默认是usrlocal,这里没有sudo权限,因此,

cuda-12.4。

make install。

注意:即使在cmake时setCUDA_SDK_ROOT_DIR=12.4�但是nvcc的版本是11.5,最后,

1. 一定要注意。

官方有sample࿰给gpuc;:.\opencv-4.10.0\samples\gpu\morphology.cpp。

mkdir buildcd build。

编译cmake。

g++ hello.cpp -o hello `pkg-config --cflags --libs opencv`

./hello。

g++编译。

后两点。如果您想通过环境变量使用opencv,

cmake编译。make的cuda版本仍然是11.5。
vim ~/.bashrcexport PATH=/usr/local/cuda-12.4/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATHsource ~/.bashrc。

测试。没有cudn,为减少重复安装󿀌在python环境中安装torch-gpu时自动生成libcudn.so。GCC编译报这样的错误󿼌改成g++ 可以。不能省略,这两点指示opencv源代码的位置。2. 关于cudnn:在我的usr/local下,

输出opencv编译信息。

CMakeLists.txt。

配置环境变量。

g++编译。

这里可以参考一下。

opencv/opencv_contrib: Repository for OpenCV's extra modules。

vim ~/.bashrcexport PATH=/usr/local/cuda-12.4/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATHsource ~/.bashrc。

Qt应用开发(扩展)-OpenCV在Linux环境下的安装配置和实例_ubuntu安装 pc opencv-CSDN博客。

make -j12.

如果这样的fail出现在make的过程中 log:说明gcc version和cuda version不匹配c;网上有人说󿀌将GCC降级为版本10,事实上,
#include <stdio.h>#include <iostream>#include <opencv2//opencv.hpp> using namespace std;using namespace cv;using namespace cv::cuda; int main(){	cout << "hello world" << endl; 	///*cuda::printCudaDeviceInfo(cuda::getDevice());*/	int num_devices = cuda::getCudaEnabledDeviceCount();	if (num_devices <= 0)	{		std::cout << "there is no cuda device found" << std::endl;		return 0;	}}。

安装

安装前一定要确认这四个版本的匹配

我终于build了 success的版本是:

gcc 11.4.0。您仍然需要sudo权限)

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/home/work/dl_work/xuchunyuan/xcyssd/opencv/opencv-4.10.0 \ -D OPENCV_EXTRA_MODULES_PATH=/home/work/dl_work/xuchunyuan/xcyssd/opencv/opencv-4.10.0/opencv_contrib-4.x/modules \ -D WITH_LIBV4L=ON \ -D WITH_CUDA=ON \ -D WITH_CUFFT=ON \ -D WITH_IPP=ON \ -D WITH_EIGEN=ON \ -D CUDA_SDK_ROOT_DIR=/usr/local/cuda-12.4 \ -D CUDNN_LIBRARY=/home/work/mambaforge/envs/xcy-google/lib/python3.8/site-packages/nvidia/cudnn/lib/libcudnn.so.9 \ -D CUDNN_INCLUDE_DIR=/home/work/mambaforge/envs/xcy-google/lib/python3.8/site-packages/nvidia/cudnn/include \ -D ENABLE_FAST_MATH=ON \ -D CUDA_FAST_MATH=ON \ -D WITH_CUBLAS=ON \ -D WITH_NVCUVID=ON \ -D WITH_TBB=ON \ -D WITH_OPENMP=ON \ -D WITH_OPENGL=ON \ -D ENABLE_CXX11=ON \ -D OPENCV_ENABLE_NONFREE=ON \ -D ENABLE_PRECOMPILED_HEADERS=OFF ..。

libcudnn.so.9.安装包。

/usr/bin/ld: /tmp/ccKXOhGa.o: undefined reference to symbol '______________________________________S_copy_charsEPCPKcs7;@GLIBCXX_3.4.21'/usr/bin/ld: /lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command linecolect2: error: ld returned 1 exit status。