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 文档了解有关这些标志与其他类似标志之间的差异的更多信息。