没有GPU编译OpenCV?

时间:2013-03-01 15:31:30

标签: opencv cmake gpu

我刚从cmake -D CMAKE_BUILD_TYPE=RELEASE ..运行OpenCV/build,并输入了我的输出:

--   OpenCV modules:
--     To be built:                 core imgproc flann highgui features2d calib3d ml video
                                    objdetect contrib nonfree gpu legacy photo python
                                    stitching ts videostab
--     Disabled:                    -
--     Disabled by dependency:      -
--     Unavailable:                 androidcamera java world

问题是,gpu的编译失败了,可能是因为我的机器没有? (这是EC2实例)。

make因奇数错误而失败:

Scanning dependencies of target opencv_test_gpu
[ 72%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_gpumat.cpp.o
[ 72%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/utility.cpp.o
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_filters.cpp.o
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_copy_make_border.cpp.o
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/main.cpp.o
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_threshold.cpp.o
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_video.cpp.o
[ 73%] Building CXX object modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
make[2]: *** [modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o] Error 4
make[1]: *** [modules/gpu/CMakeFiles/opencv_test_gpu.dir/all] Error 2
make: *** [all] Error 2

我尝试使用标记-DOPENCV_MODULES_DISABLED_USER="gpu",但会产生奇怪的输出gpu列为to be built disabled

--   OpenCV modules:
--     To be built:                 core imgproc flann highgui features2d calib3d ml video objdetect contrib nonfree gpu legacy photo python stitching ts videostab
--     Disabled:                    gpu
--     Disabled by dependency:      -
--     Unavailable:                 androidcamera java world

如何在没有gpu的情况下编译?

7 个答案:

答案 0 :(得分:20)

要禁用构建特定模块,请使用

-D BUILD_opencv_{modulename}=OFF

在这种情况下,请使用

-D BUILD_opencv_gpu=OFF

答案 1 :(得分:12)

尝试将-D WITH_CUDA=OFF添加到cmake命令行。

答案 2 :(得分:7)

对于EC2上的OpenCV 2.4.11,我必须同时包含-D BUILD_opencv_gpu=OFF-D WITH_CUDA=OFF。我还包括-D WITH_1394=OFF以避免在python中发出警告。所以:

cd opencv-2.4.11/
mkdir release
cd release/
cmake -D BUILD_opencv_gpu=OFF -D WITH_CUDA=OFF -D WITH_1394=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

答案 3 :(得分:4)

这是因为EC2实例没有足够的内存。我有一个类似的错误(不同的模块)与EC2 / Micro运行Ubuntu 12.10,但它在EC2 / Small上顺利航行。

答案 4 :(得分:2)

真正的问题是,你的设备耗尽内存。 当gcc没有足够的内存时会发生这种情况。相信我,因为我有同样的问题。

答案 5 :(得分:1)

有同样的问题。这是一个记忆问题;增加交换空间为我修好了。打开终端并输入:

free
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
mkswap /var/swap.img
swapon /var/swap.img
free

然后继续使用make

Source

答案 6 :(得分:0)

我以最可怕的方式解决了这个问题:

touch modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o
make

编译然后就完成了。这不是一个真正的解决方案,所以我想知道是否有适当的解决方案。