Я пытаюсь 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
Я не знаю то, что другую информацию я могу обработать. Просто спросите меня, в чем Вы нуждаетесь, и я дам его.
Я не полностью вырыл в то, что на самом деле происходит, но в основном 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 документы для большего количества информации о различии между этими и другими подобными флагами.