Я не могу 'сделать' (Ubuntu 18.04) OpenCV 3.1

Я пытаюсь make OpenCV 3.1 после того, как я генерирую сборку с cmake-gui. Я получаю эту ошибку

[ 16%] Generating precomp.hpp.gch/opencv_core_Release.gch
In file included from /usr/include/c++/7/bits/stl_algo.h:59:0,
             from /usr/include/c++/7/algorithm:62,
             from /home/demgall/Documents/OpenCV/opencv-3.1.0/modules/core/include/opencv2/core/base.hpp:53,
             from /home/demgall/Documents/OpenCV/opencv-3.1.0/modules/core/include/opencv2/core.hpp:54,
             from /home/demgall/Documents/OpenCV/opencv-3.1.0/modules/core/include/opencv2/core/utility.hpp:52,
             from /home/demgall/Documents/OpenCV/release/modules/core/precomp.hpp:49:
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
 #include_next <stdlib.h>
           ^~~~~~~~~~
compilation terminated.
modules/core/CMakeFiles/pch_Generate_opencv_core.dir/build.make:62: recipe for target 'modules/core/precomp.hpp.gch/opencv_core_Release.gch' failed
make[2]: *** [modules/core/precomp.hpp.gch/opencv_core_Release.gch] Error 1
CMakeFiles/Makefile2:1402: recipe for target 'modules/core/CMakeFiles/pch_Generate_opencv_core.dir/all' failed
make[1]: *** [modules/core/CMakeFiles/pch_Generate_opencv_core.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

Я не знаю то, что другую информацию я могу обработать. Просто спросите меня, в чем Вы нуждаетесь, и я дам его.

1
задан 6 October 2018 в 23:39

1 ответ

Я не полностью вырыл в то, что на самом деле происходит, но в основном gcc не может найти некоторые системные заголовочные файлы при создании PCH связанный код.

PCH поддерживают файл CMake (cmake/OpenCVPCHSupport.cmake) gcc's использования -isystem отметьте для установки каталогов, где заголовочные файлы будут разыскиваться, и похоже, что компилятор становится немного перепутанным с этим...

Простое решение, которое я нашел, состояло в том, чтобы заменить -isystem с -I. Можно внести это изменение со следующей командой:

sed -i '/_PCH_isystem_prefix/ s/"-isystem"/"-I"/' cmake/OpenCVPCHSupport.cmake

Это решает проблему о версии 3.1.0, с помощью gcc 6.5.0

См. gcc документы для большего количества информации о различии между этими и другими подобными флагами.

0
ответ дан 7 December 2019 в 23:01

Другие вопросы по тегам:

Похожие вопросы: