opencvcmake编译opencv出错CUDA的失败问题,怎么解决

学习总结,留给未来的自己~
CUDA 和opencv安装问题
昨天手贱,把CUDA和opencv的环境变量更改了,重启登陆界面输入密码时提示错误,密码一定是正确的,就是进不去,很是无语。网上各种各种解决办法都试过了,比如:在命令行模式下删除/tmp和./Xauthor,或把之前更改的环境变量改过来,等等,一点用没有。
最后重新安装一遍CUDA,重启居然好了。总结原因是由于当初遇到问题乱改CUDA的环境变量,导致显卡驱动故障,当时只是报cuda相关lib故障,重启之后就无法进入了。
还有就是在安装Opencv和CUDA时,一定要先安装CUDA然后安装Opencv。如果cuda需要重新安装,那opencv也要重新cmake和make。
1、cuda安装见我的博客
2、opencv安装
a、网上大部分教程是下载编译好的安装包,我安装后问题很多,不如自己下载编译,自己亲自动手实践后才能记得住,很简单。下载官网原版OpenCV:http://opencv.org/
cd ~/opencv2.4.10
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. (注意后面有两个点)
此时若报以下错误:
CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message):
Error generating
/home/yy/opencv-2.4.9/build/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o
make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o] 错误 1
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] 错误 2
make: *** [all] 错误 2
输入:“cmake -D CMAKE_BUILD_TYPE=bulid -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..”,即可解决!
Enter the created temporary directory (&cmake_binary_dir&) and proceed with:
sudo make install
配置openCV参数设置sudo gedit /etc/ld.so.conf.d/opencv.conf
添加:/usr/local/lib使用下面这条命令使之生效:sudo ldconfig输入:sudo gedit /etc/bash.bashrc
加入:PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfigexport PKG_CONFIG_PATH至此,OpenCV安装配置完毕
没有更多推荐了,编译了opencv+cuda,调用时候总出错,请帮忙分析下。
[问题点数:200分,结帖人wangyaninglm]
本版专家分:7581
结帖率 97.74%
CSDN今日推荐
本版专家分:20834
2014年11月 VC/MFC大版内专家分月排行榜第一
2015年1月 VC/MFC大版内专家分月排行榜第二
本版专家分:7581
本版专家分:176318
2014年11月论坛优秀版主
2010年7月 荣获微软MVP称号2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2010年1月 VC/MFC大版内专家分月排行榜第一2004年4月 VC/MFC大版内专家分月排行榜第一
2009年7月 VC/MFC大版内专家分月排行榜第二2005年9月 VC/MFC大版内专家分月排行榜第二2004年6月 VC/MFC大版内专家分月排行榜第二2004年3月 VC/MFC大版内专家分月排行榜第二
本版专家分:7581
本版专家分:7581
本版专家分:20834
2014年11月 VC/MFC大版内专家分月排行榜第一
2015年1月 VC/MFC大版内专家分月排行榜第二
本版专家分:176318
2014年11月论坛优秀版主
2010年7月 荣获微软MVP称号2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2010年1月 VC/MFC大版内专家分月排行榜第一2004年4月 VC/MFC大版内专家分月排行榜第一
2009年7月 VC/MFC大版内专家分月排行榜第二2005年9月 VC/MFC大版内专家分月排行榜第二2004年6月 VC/MFC大版内专家分月排行榜第二2004年3月 VC/MFC大版内专家分月排行榜第二
本版专家分:431894
2009年 总版技术专家分年内排行榜第二2005年 总版技术专家分年内排行榜第二
2009年7月 总版技术专家分月排行榜第二2009年3月 总版技术专家分月排行榜第二2009年1月 总版技术专家分月排行榜第二2005年7月 总版技术专家分月排行榜第二2005年5月 总版技术专家分月排行榜第二2005年3月 总版技术专家分月排行榜第二
优秀小版主2015年8月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2015年2月论坛优秀版主
2009年6月 总版技术专家分月排行榜第三2009年2月 总版技术专家分月排行榜第三2005年4月 总版技术专家分月排行榜第三2005年1月 总版技术专家分月排行榜第三
本版专家分:1916
本版专家分:1916
本版专家分:7581
本版专家分:12777
本版专家分:12777
本版专家分:7581
匿名用户不能发表回复!|
其他相关推荐程序新手,大佬轻喷
学习OpenCV(5) opencv3.4 with CUDA编译
opencv3.4 with cuda编译中的一个疑难问题的分析与解决
opencv3.4 with cuda编译,环境如下:
1.cmake 3.10
3.opencv3.4
4.visual studio 2015,visual studio 2017
opencv没有官方的build指南,官方提供的预编译版本中是不支持cuda的,3.X之后新加入的许多功能都需要自己编译才能获得.另一方面目前大家常用的VS版本是VS2015和VS2017,尤其是VS2017的安装目录的结构发生了变化,经常在涉及到CUDA的编译中出现如下问题:
11&------ 已启动生成: 项目: opencv_core, 配置: Debug x64 ------
11&Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_gpu_mat.cu.obj
11&CMake Error at cuda_compile_generated_gpu_mat.cu.obj.cmake:206 (message):
Error generating
D:/Libraries/OpenCV/opencv-3.4.0/build/test/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_gpu_mat.cu.obj
11&C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(171,5): error MSB6006: “cmd.exe”已退出,代码为 1。
11&已完成生成项目“opencv_core.vcxproj”的操作 - 失败。
与此同时,VS提示:
MSB6006 “cmd.exe”已退出,代码为 1。
其中我们注意到,问题似乎出现在cuda_compile_generated_gpu_mat.cu.obj.cmake的第206行,如果找到这个文件并打开,你会发现206行附近正是在执行nvcc 指令,看起来好像是nvcc指令有问题,如果继续按照这条线索查下去,很快就会陷入歧途,因为的确有很多情况下nvcc的命令有问题,例如缺少一个空格或者用错了符号之类的,但是这条指令通常长达上万个字符,人眼根本难以检查.
实际上如果我们仔细观察,就会发现这个报错的cmake文件是由FindCuda.cmake文件所生成的,在大多数与CUDA相关的Cmake工程中,通常都会存在这个文件,其中内容根据CUDA的版本稍有不同,但是大体上是差不多的,通过对比不同的项目中的FindCUDA.cmake,笔者得出结论:这个文件本身并不存在问题,nvcc 的参数也并没有问题.问题的核心出在
$(VCInstall)
这个宏上边,熟悉VS的读者应该知道在VS的各种路径配置中我们经常会使用类似的宏,以确保在不同的系统上我们的脚本都能正确的找到工作路径而不必因为更换开发机环境而重新配置路径.这个宏明显显示的就是VC的安装位置,VC指的是VS中的”MSVC生成工具”,也就是真正执行编译,链接这些操作的”编译器内核”,这个路径对于编译工作来讲至关重要,而在VS2015和VS2017上,这个宏变量给出的路径是错的.最要命的是,如果您的电脑只安装了VS2017,不管您选装的是V141工具集还是V140工具集,这个宏给出的路径都是根本不存在的.而nvcc在工作的时候需要找到本地的C编译器,这个路径由变量”CUDA_HOST_COMPILER”给出,这个变量的默认取值,正是:
$(VCInstall)bin
所以,如果在涉及到cuda的编译时,不手动指定C编译器的正确位置,nvcc是没办法自己找到正确的位置的,因为这个宏定义的值根本不正确.
当我们遇到了nvcc的问题,并通过分析确定是由于上述问题导致的,那么我们应该设置哪个编译器给CUDA_HOST_COMPILER呢?为了找到正确的编译器,笔者安装了多个版本的VS逐个测试,如果您对VS稍有了解,应该知道他内置的生成工具中含有对应很多平台的编译器:cl.exe,最终,笔者确定:
CUDA 9.0 在VS2015内置的编译器下工作正常,如果您把VS2015安装在C盘,那么正确的cl.exe如下:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe
另外,虽然CUDA9.0声称支持VS2017,但是笔者尝试了其中带有的所有cl工具,都不能解决这个问题.其次在nvcc编译.cu文件的过程中输出的信息全部都是”锟斤拷”之类的乱码希望有哪位了解其中奥秘的朋友能留言告诉我,谢谢~
没有更多推荐了,Windows7+VS2012下64位OpenCV3.0+CUDA7.5的编译和部署 - JohnHany的博客
Comment threads
Thread replies
Most reacted comment
Hottest comment thread
Comment authors
Recent comment authors
& Subscribe &
所有新评论
回复我的评论
" name="wpdiscuz_subscription_button" />
int num_devices = cv::gpu::getCudaEnabledDeviceCount();测试了一下,返回值为0,cuda并没有配置成功。。。难道是cuda7.5不支持opencv2.4.9,但是我最后的文件都生成了呀?!
累积阅读525086Regularly updated CV分类目录
- 77,771 次阅读 - 54,163 次阅读 - 34,489 次阅读 - 26,311 次阅读 - 26,211 次阅读 - 22,872 次阅读 - 22,782 次阅读 - 22,462 次阅读 - 19,885 次阅读 - 18,019 次阅读编译OpenCV设计启用OpenGL三维可视化支持和启用GPU CUDA并行加速处理的基本知识:
  1、从2.4.2版本开始,OpenCV在可视化窗口中支持OpenGL,这就意味着在OpenCV中可以轻松的渲染任何3D内容。但是由于当前版本(OpenCV2.4.2)在默认情况下不支持OpenGL,也许在将来的OpenCV版本中会默认支持利用OpenGL进行三维可视化。所以在当前版本中需要手工开启支持OpenGL。这一点在利用CMake编译OpenCV时从字段“WITH_OPENGL”默认未被勾选可以得到证明。
  2、新版本的OpenCV可以利用GPU CUDA并行加速数据和图像处理。默认不支持利用GPU CUDA并行加速。如果需要编译支持CUDA的OpenCV库时,如果编译计算机已经安装了CUDA驱动程序和OpenCV运行时,在利用CMake编译OpenCV时字段“WITH_CUDA”默认会被自动勾选上的。如果编译计算机未安装CUDA驱动程序和OpenCV运行时,CMake的字段“WITH_CUDA”默认就不会被自动勾选上。
  上图中,是因为本人的计算机安装了CUDA6.5,故CMake会勾选上WITH_CUDA字段。
因为CUDA9.0的若干改动,在Window环境下编译opencv源码时会产生若干错误,先将错误整合如下:
1. Cmake生成vs工程文件发生错误如下:
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)
解决方案见:
2.Visual Studio工程文件错误如下:
cmd.exe exit with code 1
Cmake修改CUDA_HOST_COMPILER参数
类似于/vs2015/VC/bin/x86_amd64/cl.exe
原因好像是无法自动检测出compiler
3.Visual Studio工程文件错误:
C2610 等有关tuple的错误
Cmake去掉BUILD_PERF_TESTS和BUILD_TESTS
同时也可以减少编译源码时间。
参考链接:
其它链接:
阅读(...) 评论()}

我要回帖

更多关于 opencv静态编译 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信