我无法“制作”OpenCV 3.1(Ubuntu 18.04)

我无法“制作”OpenCV 3.1(Ubuntu 18.04)

make我在使用 cmake-gui 生成构建后尝试使用OpenCV 3.1。我收到此错误

[ 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

我还没有完全弄清楚到底发生了什么,但基本上 gcc 在构建 PCH 相关代码时找不到某些系统头文件。

PCH 支持 CMake 文件(cmake/OpenCVPCHSupport.cmake)使用 gcc 的-isystem标志来设置查找头文件的目录,看起来编译器对此有点困惑......

我发现一个简单的解决方案是将 替换-isystem-I。您可以使用以下命令进行此更改:

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

这解决了使用 gcc 6.5.0 的 3.1.0 版本的问题

查看gcc 文档了解有关这些标志与其他类似标志之间的差异的更多信息。

相关内容