之前已经安装过的opencv3.2.0+opencv-contrib3.2.0想安装在另一个地方结果出现错误了,明明什么都没改变过,只能硬着头皮改错误了。(后来发现是因为CUDA造成的)
最开始从CMakeError.log文件中得知有如下错误:(这个错误一直都在CMakeError.log中记录,但是似乎不是主要原因,而且编译的终端里没有显示这个错误,不太清楚是不是必须要修改这个错误)
opencv-3.2.0/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10:
fatal error: sys/videoio.h: No such file or directory
参考链接:https://stackoverflow.com/questions/45582565/opencv-cmake-error-no-such-file-or-directory-on-ubuntu
在终端显示了如下错误:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)
linked by target “opencv_cudev” in directory D:/Cproject/opencv/opencv/sources/modules/cudev
linked by target “opencv_cudev” in directory D:/Cproject/opencv/opencv/sources/modules/cudev
linked by target “opencv_test_cudev” in directory D:/Cproject/opencv/opencv/sources/modules/cudev/test
…
这篇博客很好的解决了这个问题:https://blog.csdn.net/u014613745/article/details/78310916
博主解释:引起错误的主要原因是cuda9不再支持2.0架构。(恍然大悟,近期刚更换了NVIDA显示驱动,下载了新版本的CUDA,查看了自己的CUDA版本为10.1.1243,更新前用的是系统自带的Nouveau显示驱动,而且没有下载或更新CUDA,所以之前编译没错误)NIVIDA官方cuda下载
nvcc fatal : Unsupported gpu architecture 'compute_20’错误
找到cmake/OpenCVDetectCUDA.cmake
文件
修改
set(__cuda_arch_bin "2.0 3.0 3.5 3.7 5.0 5.2 6.0 6.1")
为
set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2 6.0 6.1")
参考链接:https://www.twblogs.net/a/5b7ecca02b717767c6abdf22(这位碰到了很多类似问题,因此总结的比较全面)
也可以利用cmake-gui,在gui中修改,参考链接:https://blog.csdn.net/Sanviolet/article/details/79081363
然后可以顺利编译了,但是花了很长时间,而且有一大堆与cudev相关的警告。(用起来会不会有问题待定~)
对于这些警告,有人是这么解释的:shfl without sync causes a warning in CUDA 9.2, but shfl with sync causes an error in CUDA 8.0