所以要切换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目录下(但是,
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。
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。