我刚刚使用CUDA 7.5开始了Ubuntu 16.04的全新安装,但在安装OpenCV3.1时遇到了问题。
当我运行make时,我得到了以下错误:
[ 9%] Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_gpu_mat.cu.o
/usr/include/string.h: In function ‘void* __mempcpy_inline(void, const void, size_t)’:
/usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
return (char *) memcpy (__dest, __src, __n) + __n;我在各种(封闭的) github bug/问题讨论线程中找到了一个解决方案,如下所示:
In opencv/cmake/OpencvDetectCuda.cmake, change
set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1})
to
set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -D_FORCE_INLINES -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1})这个解决方案对我很有效,但我仍然不理解最初的问题或解决方案。为什么添加标志-D_FORCE_INLINE就能解决问题?为什么string.h会有问题?这是(我认为)正在编译的比较稳定的文件之一。我本以为CUDA7.5或OpenCV3.1会出现任何错误?
如果我再次看到此问题,我如何识别它?
https://stackoverflow.com/questions/38237857
复制相似问题