我刚从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
的情况下编译?
答案 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
。
答案 6 :(得分:0)
我以最可怕的方式解决了这个问题:
touch modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o
make
编译然后就完成了。这不是一个真正的解决方案,所以我想知道是否有适当的解决方案。