Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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
C++ 编译有关缺少标头的错误_C++_Python_C_Opencv - Fatal编程技术网

C++ 编译有关缺少标头的错误

C++ 编译有关缺少标头的错误,c++,python,c,opencv,C++,Python,C,Opencv,我最近安装了OpenCV(使用cmake),当我尝试运行示例build_all.sh from sample/c时,我遇到以下错误: compiling fback_c.c gcc: error: rt: No such file or directory gcc: error: pthread: No such file or directory gcc: error: m: No such file or directory gcc: error: dl: No such file or d

我最近安装了OpenCV(使用cmake),当我尝试运行示例build_all.sh from sample/c时,我遇到以下错误:

compiling fback_c.c
gcc: error: rt: No such file or directory
gcc: error: pthread: No such file or directory
gcc: error: m: No such file or directory
gcc: error: dl: No such file or directory
......................................
compiling find_obj_calonder.cpp
g++: error: rt: No such file or directory
g++: error: pthread: No such file or directory
g++: error: m: No such file or directory
g++: error: dl: No such file or directory
注意:它们的数量更多,但对于每个文件,它们都是相同的

但是,当我在sample/cpp中的一个示例上使用它时,程序实际上编译:

g++ test.cpp -o test -I/usr/local/include/opencv -I/usr/local/include  -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
另外,当我试图编译一个.py文件时,我得到了以下错误

ImportError: No module named cv2
我用的是x64软呢帽19


我想知道为什么当我使用该命令时,程序会编译,但当我使用默认方法时,它不起作用。为了编译.py,我应该怎么做?

好的,所以我再试了一次,这次我从软件安装中安装了以下软件包

用于使用OpenCv库的开发文件

Python竞购应用程序


。在他们的官方指示中,他们没有说明这一点。现在它的编译没有错误。

我对Fedora Core不太熟悉(我使用它时它还是RedHat),但许多现代Linux发行版将普通系统库放在/usr/lib中,并将include放在/usr/include中。因为您从头开始编译OpenCV,所以它将它放在/usr/local/。。。默认情况下,构建系统和python都不需要查看

这就是手动gcc命令起作用的原因(-I和-L开关告诉gcc查看/usr/local/…)

安装您所做的软件包只是将分发版本安装到/usr/…中,因此,虽然它可以工作,但实际上您的系统上有两个不同的版本,并且示例和python正在使用安装在/usr/…中的版本。。。(来自软件包管理器)不是您的自定义安装


您可以围绕编译自己与使用软件包管理器进行完整的讨论,但是现在,如果您决定自己编译东西,请确保将前缀设置为/usr而不是/usr/local或者设置系统以查看/usr/local以及/usr。

如果您使用cmake,只需在cmake配置中将BUILD_示例打开即可