linux下编写opencv工程的makefile

在ubuntu14.04 x64位机中,编译opencv程序

安装pkg-config工具,可以在软件中心中搜索安装

pkg-config工具说明:
一般来说,linux头文件在/usr/include 目录中,如果不在,那么在编译的时候需要用 -I 参数指定其路径。
为了方便库的使用,库在安装时会有一个文件专门保存库的各种信息,需要的时候再通过特定的工具将其中有用的信息提取出来供编译和链接使用。目前最为常用的库信息提取工具就是pkg-config。
pkg-config 是通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。这些信息可以通过pkg-config提供的参数单独提取出来直接供编译器和链接器使用。

pkg-config提供了下面几个功能:

  1. 检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件
  2. 获得编译预处理参数,如宏定义,头文件的位置
  3. 获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数
  4. 自动加入所依赖的其它库的设置

编辑makefile文件

    CFLAGS = -g -Wall
    LIBS = $(shell pkg-config opencv --cflags --libs)
    OBJS = main.cpp
    CXX = g++
    all: demo
    demo: $(OBJS)
        $(CXX) $(CFLAGS) $(OBJS) $(LIBS) -o $@ 
    clean:
        rm -f demo

说明:一般情况下,LIBS后跟的应该是具体的路径,这里使用了shell脚本调用pkg-config,自动查找路径,非常方便。
注意:如果要使用交叉编译工具,如arm-linux-gcc那么链接的opencv在安装时,也应该使用交叉编译工具编译生成库。

在NanoPi x32位机中,编译opencv程序

NanoPi预装有opencv,包括使用路径都已配置完成,不再需要pkg-config工具。

CFLAGS =-g -Wall
OPENCVLIB =-lopencv_core -lopencv_highgui -lopencv_imgproc -lpthread
OBJS = main.cpp
CXX = g++
all: demo
demo: $(OBJS)
    $(CXX) $(CFLAGS) $(OBJS) -L. -lmylib $(OPENCVLIB) -o $@ 
run: demo
    sudo rm /dev/video0
    sudo ln -s /dev/video9 /dev/video0
    DISPLAY=:0 ./demo
clean:
    rm -f demo

说明:这里添加了自己的库lmylib

你可能感兴趣的:(Linux)