编译基本的openCV程序时出错

时间:2014-04-15 02:17:42

标签: c++ opencv pkg-config

我按照下面提到的链接安装了openCV: https://help.ubuntu.com/community/OpenCV#aStep_1

安装顺利,现在编译测试程序时: 使用以下命令:

opencv openCVtest.cpp
它引发了以下错误:

compiling openCVtest.cpp
g++: error: missing argument to ‘-l’
Output file => openCVtest

我查找了我用来编译的脚本(给定的here) 并看到了将用于编译我的c ++代码的这一特定行:

g++ -ggdb `pkg-config --cflags opencv` -o `basename $1 .cpp` $1 `pkg-config --libs opencv`;

我理解“-l”要求一些库,但我认为我不应该将除我的代码之外的任何内容传递给此脚本。

PS这里是该行执行内容的详细信息:

hduser@ishan-Notebook-PC:~/Documents/OpenCv$ echo g++ -ggdb `pkg-config --cflags opencv` -o `basename opencvtest.cpp .cpp` opencvtest.cpp `pkg-config --libs opencv`

g++ -ggdb -I/usr/include/opencv -I/usr/include/opencv2 -o opencvtest opencvtest.cpp -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l

你能帮我解决一下,我究竟做错了什么? 谢谢 !

更新

我发现我的opencv.pc文件包含一个额外的“-l”我删除了该标志,上述错误消失了:

opencv.pc文件的内容:

prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version: 2.x.x
Cflags: -I${includedir}/opencv -I${includedir}/opencv2
Libs: -L${libdir} -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l

请注意最后一行的额外“ - l”

但是,现在我收到以下错误:

openCVtest.cpp:1:39: fatal error: opencv2/highgui/highgui.hpp: No such file or directory
 #include "opencv2/highgui/highgui.hpp"

1 个答案:

答案 0 :(得分:1)

似乎pkg-config最后会返回一个额外的-l。 您可以尝试不用手动运行命令:

g++ -ggdb -I/usr/include/opencv -I/usr/include/opencv2 -o opencvtest opencvtest.cpp -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy

<强>更新
对于您遇到的第二个问题,请尝试使用不包含opencvopencv2目录的包含路径。

所以不要这样:

Cflags: -I${includedir}/opencv -I${includedir}/opencv2

试试这个:

Cflags: -I${includedir}