您的位置:首页 > 运维架构

ubuntu opencv compilation error/bug with cuda 8.0 RC

2016-09-20 15:11 411 查看
使用源码编译opencv master分支(3.1.0)时,出现如下错误:

/usr/local/cuda/include/thrust/detail/reference.inl(127): error: no default constructor exists for class "thrust::detail::execute_with_allocator<cv::cuda::device::ThrustAllocator, thrust::system::cuda::detail::execute_on_stream_base>"
detected during:
instantiation of "void thrust::reference<Element, Pointer, Derived>::assign_from(OtherPointer) [with Element=float2, Pointer=thrust::pointer<float2, thrust::detail::execute_with_allocator<cv::cuda::device::ThrustAllocator, thrust::system::cuda::detail::execute_on_stream_base>, thrust::use_default, thrust::use_default>, Derived=thrust::use_default, OtherPointer=const float2 *]"
(65): here

......

4 errors detected in the compilation of "/tmp/tmpxft_00003fb9_00000000-17_gftt.compute_60.cpp1.ii".
CMake Error at cuda_compile_generated_gftt.cu.o.cmake:264 (message):
Error generating file
/home/chengxiang/workspace/opencv/build/modules/cudaimgproc/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_gftt.cu.o

modules/cudaimgproc/CMakeFiles/opencv_cudaimgproc.dir/build.make:3603: recipe for target 'modules/cudaimgproc/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gftt.cu.o' failed
make[2]: *** [modules/cudaimgproc/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gftt.cu.o] Error 1
CMakeFiles/Makefile2:4419: recipe for target 'modules/cudaimgproc/CMakeFiles/opencv_cudaimgproc.dir/all' failed
make[1]: *** [modules/cudaimgproc/CMakeFiles/opencv_cudaimgproc.dir/all] Error 2
Makefile:160: recipe for target 'all' failed


这是一个cuda8.0 rc版本bug, 使用github上的thrust 1.8.3tag替换cuda8.0rc安装时的thrust即可.

# find the thrust directory
find /usr/local/cuda -type d -name "thrust"
# clone the 1.8.3 thrust from github
git clone https://github.com/thrust/thrust.git -b 1.8.3
# diff them
diff -u thrust /usr/local/cuda/include/thrust
# backup the cuda/thrust
sudo mv /usr/local/cuda/include/thrust /usr/local/cuda/include/thrust_old
# move the thrust to cuda dir
sudo mv ./thrust /usr/local/cuda/include/thrust


实际测试通过,配置如下:

opencv:3.1.0(master)

cuda:8.0.26
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv cuda