2013-08-01 61 views
0

OpenCV 2.4.6增加了对CUDA 5.5的支持,但尝试构建它失败。 CUDA从Fedora 18的仓库安装。没有CUDA支持的OpenCV本身也很顺利。无法使用Fedora 19上的CUDA 5.5编译OpenCV 2.4.6

[ 1%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/gpumat.cpp.o 
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:288:52: error: 'bool cv::gpu::deviceSupports(cv::gpu::FeatureSet)' should have been declared inside 'cv::gpu' 
bool cv::gpu::deviceSupports(FeatureSet feature_set) 
                ^
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp: In function 'bool cv::gpu::deviceSupports(cv::gpu::FeatureSet)': 
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:288:6: warning: no previous declaration for 'bool cv::gpu::deviceSupports(cv::gpu::FeatureSet)' [-Wmissing-declarations] 
bool cv::gpu::deviceSupports(FeatureSet feature_set) 
    ^
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp: At global scope: 
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:359:49: error: no 'size_t cv::gpu::DeviceInfo::sharedMemPerBlock() const' member function declared in class 'cv::gpu::DeviceInfo' 
size_t cv::gpu::DeviceInfo::sharedMemPerBlock() const 
               ^
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp: In function 'void cv::gpu::createContinuous(int, int, int, cv::gpu::GpuMat&)': 
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:794:6: error: redefinition of 'void cv::gpu::createContinuous(int, int, int, cv::gpu::GpuMat&)' 
void cv::gpu::createContinuous(int rows, int cols, int type, GpuMat& m) 
    ^
In file included from /home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:44:0: 
/home/lucky/programming/sphinx/build/output/include/opencv2/core/gpumat.hpp:551:17: error: 'void cv::gpu::createContinuous(int, int, int, cv::gpu::GpuMat&)' previously defined here 
    inline void createContinuous(int rows, int cols, int type, GpuMat& m) 
       ^
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp: In function 'void cv::gpu::ensureSizeIsEnough(int, int, int, cv::gpu::GpuMat&)': 
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:806:6: error: redefinition of 'void cv::gpu::ensureSizeIsEnough(int, int, int, cv::gpu::GpuMat&)' 
void cv::gpu::ensureSizeIsEnough(int rows, int cols, int type, GpuMat& m) 
    ^
In file included from /home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:44:0: 
/home/lucky/programming/sphinx/build/output/include/opencv2/core/gpumat.hpp:559:17: error: 'void cv::gpu::ensureSizeIsEnough(int, int, int, cv::gpu::GpuMat&)' previously defined here 
    inline void ensureSizeIsEnough(int rows, int cols, int type, GpuMat& m) 
       ^
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp: In function 'cv::gpu::GpuMat cv::gpu::allocMatFromBuf(int, int, int, cv::gpu::GpuMat&)': 
/home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:831:8: error: redefinition of 'cv::gpu::GpuMat cv::gpu::allocMatFromBuf(int, int, int, cv::gpu::GpuMat&)' 
GpuMat cv::gpu::allocMatFromBuf(int rows, int cols, int type, GpuMat &mat) 
     ^
In file included from /home/lucky/programming/sphinx/build/3rdparty/opencv/opencv-2.4.6.1/modules/core/src/gpumat.cpp:44:0: 
/home/lucky/programming/sphinx/build/output/include/opencv2/core/gpumat.hpp:567:19: error: 'cv::gpu::GpuMat cv::gpu::allocMatFromBuf(int, int, int, cv::gpu::GpuMat&)' previously defined here 
    inline GpuMat allocMatFromBuf(int rows, int cols, int type, GpuMat &mat) 
       ^
At global scope: 
cc1plus: warning: unrecognized command line option "-Wno-unnamed-type-template-args" [enabled by default] 
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/gpumat.cpp.o] Error 1 
make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 
make: *** [all] Error 2 

有没有办法解决这个问题?或者它是一个问题太新版本的GCC?

+0

这是一个奇怪的错误。也许它在头文件中有一些问题,例如它使用以前的OpenCV版本的头文件。你有没有其他安装的OpenCV版本? – jet47

+0

是的,找到找到以前安装的库的版本,这给了冲突。非常感谢小费。 – Alexander

+1

@ jet47或者亚历山大,如果你发布了你做的答案,那么我们可以把这个问题称为封闭/回答。然后,我会upvote你的答案。谢谢。 –

回答

1

似乎@ jet47已决定不将我的评论请求做出响应,所以我发布这个答案让我们可以把这个问题回答(这显然已经在征求意见。)

确保你只有一个安装的OpenCV版本,如果你遇到这样的问题。如果您找到除预期版本之外的其他已安装版本,请将其删除。