Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译OpenCV时出错,致命错误:stdlib.h:没有这样的文件或目录_Opencv_Gcc_Cmake - Fatal编程技术网

编译OpenCV时出错,致命错误:stdlib.h:没有这样的文件或目录

编译OpenCV时出错,致命错误:stdlib.h:没有这样的文件或目录,opencv,gcc,cmake,Opencv,Gcc,Cmake,我正在尝试编译OpenCV。我已经尝试了主分支(目前在提交dc9602e)和版本/标签3.1.0。我正在使用Fedora 24,我首先尝试使用Fedora附带的gcc(gcc(gcc)6.2.1 20160916(Red Hat 6.2.1-2))。我还尝试了在我的机器上编译的GCC6.2.0 我正在使用具有以下参数的cmake: cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_NEW_PYTH

我正在尝试编译OpenCV。我已经尝试了主分支(目前在提交dc9602e)和版本/标签3.1.0。我正在使用Fedora 24,我首先尝试使用Fedora附带的gcc(gcc(gcc)6.2.1 20160916(Red Hat 6.2.1-2))。我还尝试了在我的机器上编译的GCC6.2.0

我正在使用具有以下参数的cmake:

cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_NEW_PYTHON_SUPPORT=ON -DINSTALL_PYTHON_EXAMPLES=ON -DWITH_TBB=ON -DWITH_V4L=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=ON -DWITH_QT=ON -DWITH_OPENGL=ON -DWITH_OPENCL=ON -DWITH_EIGEN=ON -DWITH_OPENEXR=ON
cmake
运行良好,然后我运行
make
。OpenCV版本和gcc版本的组合无关紧要,结果是一样的:

In file included from /usr/local/include/c++/6.2.0/bits/stl_algo.h:59:0,
                 from /usr/local/include/c++/6.2.0/algorithm:62,
                 from /home/dmelo/proj2/opencv/modules/core/include/opencv2/core/base.hpp:55,
                 from /home/dmelo/proj2/opencv/modules/core/include/opencv2/core.hpp:54,
                 from /home/dmelo/proj2/opencv/modules/highgui/include/opencv2/highgui.hpp:46,
                 from /home/dmelo/proj2/opencv/build/modules/highgui/precomp.hpp:45:
/usr/local/include/c++/6.2.0/cstdlib:75:25: fatal error: stdlib.h: No such file or directory
 #include_next <stdlib.h>
                         ^
compilation terminated.
在/usr/local/include/c++/6.2.0/bits/stl_algo.h:59:0中包含的文件中,
从/usr/local/include/c++/6.2.0/algorithm:62,
from/home/dmelo/proj2/opencv/modules/core/include/opencv2/core/base.hpp:55,
from/home/dmelo/proj2/opencv/modules/core/include/opencv2/core.hpp:54,
从/home/dmelo/proj2/opencv/modules/highgui/include/opencv2/highgui.hpp:46,
来自/home/dmelo/proj2/opencv/build/modules/highgui/precomp.hpp:45:
/usr/local/include/c++/6.2.0/cstdlib:75:25:致命错误:stdlib.h:没有这样的文件或目录
#下一步包括
^
编译终止。

还有其他人经历过这种情况吗?如何解决此问题?

请尝试从cmake gui或使用命令行参数禁用预编译头

-DENABLE_PRECOMPILED_HEADERS=OFF

从zip包(opencv-2.4.11)编译对我来说不起作用,但是 最新版本*给了我一个成功的ubuntu 17.04版本

git clone https://github.com/opencv/opencv.git
cd opencv
mkdir mybin
cd mybin
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_FFMPEG=OFF ..
make
sudo make install
更新:您可能希望在
git clone
之后执行
git checkout 3.4
,因为自我编写本文以来,主分支有许多新的更改

注意:ffmpeg是不推荐使用的,并且是可选的,因此我使用了带有_ffmpeg=OFF的
标志
更新:我可以在18.04上使用ffmpeg构建,使用
和_ffmpeg=on
标志。最新的ffmpeg也应该适用于17.04。如果你成功了,请留言

*OpenCV提交id cca99bf8249387da9f79be8d549b2d49e39a0289

其他信息: 编译之前安装的依赖项-

build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libtbb2 libtbb-dev
希望这对以后的人有帮助

对我来说:

[ 33%] Building CXX object 
/home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/bin/x86_64-w64-mingw32-g++    @CMakeFiles/Transform360.dir/includes_CXX.rsp -std=c++11  -O3 -DNDEBUG   -o CMakeFiles/Transform360.dir/Library/VideoFrameTransform.cpp.obj -c /home/rdp/ffmpeg-windows-build-helpers/sandbox/win64/transform360_git/Transform360/Library/VideoFrameTransform.cppCMakeFiles/Transform360.dir/Library/VideoFrameTransform.cpp.obj
In file included from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/ext/string_conversions.h:41,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/bits/basic_string.h:6391,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/string:52,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/stdexcept:39,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/array:39,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/tuple:39,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/bits/stl_map.h:63,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/map:61,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/win64/transform360_git/Transform360/Library/VideoFrameTransform.h:18,
                 from /home/rdp/ffmpeg-windows-build-helpers/sandbox/win64/transform360_git/Transform360/Library/VideoFrameTransform.cpp:14:
/home/rdp/ffmpeg-windows-build-helpers/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
 #include_next <stdlib.h>
               ^~~~~~~~~~
compilation terminated.
[33%]构建CXX对象
/home/rdp/ffmpeg windows构建助手/sandbox/cross_编译器/mingw-w64-x86_64/bin/x86_64-w64-mingw32-g++@CMakeFiles/Transform360.dir/includes_CXX.rsp-std=c++11-O3-DNDEBUG-o CMakeFiles/Transform360.dir/Library/VideoFrameTransform.cpp.obj-c/home/rdp/ffmpeg windows构建帮助程序/sandbox/win64/transform360_git/transform360/Library/VideoFrameTransform.cppCMakeFiles/transform360.dir/Library/VideoFrameTransform.cpp.obj
在/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/ext/string_conversions.h:41中包含的文件中,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/bits/basic_string.h:6391,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/string:52,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/stdexcept:39,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/array:39,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/tuple:39,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/bits/stl_map.h:63,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/map:61,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/win64/transform360_git/transform360/Library/VideoFrameTransform.h:18,
来自/home/rdp/ffmpeg windows构建帮助程序/sandbox/win64/transform360\u git/transform360/Library/VideoFrameTransform.cpp:14:
/home/rdp/ffmpeg windows构建帮助程序/sandbox/cross_编译器/mingw-w64-x86_64/x86_64-w64-mingw32/include/c++/8.2.0/cstdlib:75:15:致命错误:stdlib.h:没有此类文件或目录
#下一步包括
^~~~~~~~~~
编译终止。

意思是“编辑CMakeFiles/Transform360.dir/includes_CXX.rsp并将-isystem替换为-I”提示,来自

我在Manjaro Linux上,由于
TBBConfig.cmake
文件是
英特尔TBB
库的一部分,并且包含对
include
文件夹路径的修改,在第56行:

set_target_properties(TBB::${_tbb_component} PROPERTIES
                                  INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/../../../include")

在我的例子中,
-DENABLE\u PRECOMPILED\u HEADERS=OFF
已经关闭,并且没有解决问题,似乎这个标志
-DCMAKE\u NO\u SYSTEM\u FROM\u IMPORTED=ON
修复了它。

对于像Manjaro这样的archlinux发行版,标志
-D ENABLE\u PRECOMPILED\u HEADERS=OFF
-D CMAKE\u NO\u SYSTEM\u FROM\u IMPORTED=ON
成功地修复了它

在编译过程中,我还遇到了
blas
cblas
的问题。
我通过添加
CMAKE_EXE_LINKER_FLAGS=-lcblas

链接了
cblas
,尝试禁用预编译的标题(如果打开CMAKE gui,很容易找到该变量),它起作用了。添加
-DENABLE\u PRECOMPILED\u HEADERS=OFF
作为
cmake
完成作业的参数。请你把它作为一个answare发布,这样我就可以把它标记为正确的吗?怎么做我不明白。我是一个新手。有点紧急。请帮助。谢谢。你使用cmake来构建OpenCV。在命令行上,添加回答中描述的参数:
cmake-DENABLE\u PRECOMPILED\u HEADERS=OFF
我遇到了类似的错误。令人沮丧的是,对于我来说,C++/cmake在这里所做的事情没有明确的逻辑路径。标准库