ubuntu下编译和链接的过程 &&编写opencv makefile

编译&&链接

编译就是将源文件通过Complier,生成中间文件,在windows下,中间文件就是.obj 文件,在Ubuntu下,就是.o文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)

过程

(1)在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。

(2)在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error),在VC下,这种错误一般是:Link 2001错误,意思说是说,链接器未能找到函数的实现。你需要指定函数的Object File.

-makefile文件

make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

example

下面写一个C++编译openCV3.0的代码的makefile文件书写:

这里我的openCV装的是openCV3.2,并且借用了pkg-config 命令;

首先简单说下pkg -config命令:

pkg-config 当你从源代码编译软件时,用来提供依赖库的信息的软件 

终端输入
 

pkg-config opencv --libs --cflags

就可以看到编译和链接所需要的头文件目录和库文件目录。 如果发现不正确,可以修改/usr/local/lib/pkgconfig/opencv.pc文件,这个文件就是opencv的目录配置

目录截图为: 

这个文件就记录着opencv库的版本、编译参数、链接参数等信息

  • 给出我的刚刚写的makefile吧
INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
OBJECTS = LaneDetector.o mian.o//中间文件
SOURCE = LaneDetector.cpp mian.cpp //源文件
//不同的工程也就是修改这两行里面的内容
BIN = bin
$(OBJECTS) : $(SOURCE)//编译
    g++ -c $(SOURCE)
$(BIN):$(OBJECTS)//链接
    g++ -o $(BIN) $(OBJECTS) -I $(INCLUDE) $(LIBS)


clean:
    rm $(OBJECTS) $(BIN)

运行代码,直接在终端输入

make bin

./bin
然后代码就跑起来了
××最后注意,要直接复制我的makefile文件,把//的中文注释删除了哈。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值