Linux上编译opencv程序

在linux上编译opencv的方法大致有两种,一种是直接按照c/c++程序那样在命令行编译,只是在编译时要包含进opencv动态链接库.另一种是用Cmake的方法.

命令行:

zoegreen@zoegreen-Lenovo-IdeaPad-Y470:~/robot$ g++ test.cpp -o test `pkg-config --cflags --libs opencv`

这里我们用到了一个工具“pkg-config”,它主要有以下几个功能:
检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。 获得编译预处理参数,如宏定义,头文件的位置。 获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。

  所有有了这个工具之后编译就很方便了(不过在此之前要确保安装的OpenCV的安装链接库文件的目录下有一个pkgconfig文件夹,在该文件夹里面有个opencv.pc的文件,其实这就是pkg-config下OpenCV的配置文件)。

  使用pkg-config时,选项–cflags 它是用来指定程序在编译时所需要头文件所在的目录,选项 –libs则是指定程序在链接时所需要的动态链接库的目录。例如我下面这张图就显示了我电脑上OpenCV的相关目录。
这里还要注意的一点就是:pkg-config和它的参数需要被包含在引号里,而且这个引号是键盘左上角的那个 ` !!! 很多人以为是双引号键的那个引号,其实并不是,那样的话编译会出错:

g++: error: pkg-config --cflags --libs opencv: 没有那个文件或目

编译成功后,运行程序:
Linux上编译opencv程序_第1张图片

Hough圆检测程序(可以看出我脸是有多圆了吧= =)…

Cmake工具

make 工具程序能自动地确定一个大程序系统中哪些程序文件需要被重新编译,并发出命令对这些程 序文件进行编译。在使用 make 之前,需要编写 Makefile 信息文件,该文件描述了整个程序包中各程序之间的关系,并针对每个需要更新的文件给出具体的控制命令。
Makefile 文件相当于程序编译过程中的批处理文件。是工具程序 make 运行时的输入数据文件。只要在含有 Makefile 的当前目录中键入 make 命令,它就会依据 Makefile 文件中的设置对源程序或目标代码文件进行编译、连接或进行安装等活动。
在 Makefile 文件中,开头为 ‘#’ 的行是注释行。文件开头部分的 ‘=’ 赋值语句定义了一些参数或命令的缩写。

你可能感兴趣的:(Linux)