Скомпилировать OpenCV без 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
?
Ответы
Ответ 1
Я исправил эту конкретную проблему самым ужасным образом:
touch modules/gpu/CMakeFiles/opencv_test_gpu.dir/test/test_core.cpp.o
make
Затем компиляция завершается нормально. На самом деле это не решение, поэтому я хотел бы знать, есть ли правильное исправление.
Ответ 2
Чтобы отключить создание определенного модуля, используйте
-D BUILD_opencv_{modulename}=OFF
В этом случае используйте
-D BUILD_opencv_gpu=OFF
Ответ 3
Попробуйте добавить -D WITH_CUDA=OFF
в свою командную строку cmake
.
Ответ 4
Для OpenCV 2.4.11 на EC2 мне пришлось включить как -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
Ответ 5
Это вызвано нехваткой памяти с вашим экземпляром EC2. Я получил аналогичную ошибку (другой модуль) с EC2/Micro, работающим под управлением Ubuntu 12.10, но он был плавным на EC2/Small.
Ответ 6
Реальный вопрос: ваше устройство исчерпало память.
Это происходит, когда gcc не хватает памяти. Поверьте мне, поскольку у меня была такая же проблема.
Ответ 7
Была та же проблема. Это проблема памяти; увеличение пространства подкачки фиксировало это для меня. Откройте терминал и введите следующее:
free
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
mkswap /var/swap.img
swapon /var/swap.img
free
Затем перейдите к make
.
Источник