Linux命令make -f,linux 之命令make

在linux中,有一个重要的自动化编译命令—make,在源码文件的安装和开发大型项目的时候,都需要用到这个命令,

例 安装程序和安装检测 make , make install make test

例 卸载安装文件 make clean

采用make 命令编译大型项目,可以使编译工作变的简单而有序,通过编写MakeFile 描述文件可以使整个项目中所有源文件之间的依赖关系一清二楚。

如果没有make 命令,那么编译程序将会是一份非常复杂的事情,合理的使用make命令和Makefile文件可以提高大型项目的开发效率,编写Makefile是linux开发人员必备的技能。

make命令主要作用是执行Makefile文件,通过Makefile文件描述源程序之间的依赖关系,进行自动维护编译,要想熟练的运用make命令,需熟练掌握编写 Makefile文件的技能。

Makefile文件

在程序编写中默认是采用Makefile作为自动化编译描述文件,如果习惯采用其它文件名 例 将描述文件放入 “Makefile20150225” 则执行make命令的时候,需要显式的指定Makefile文件

[root@localhost ~]#make -f Makefile20150225

例如,一个名为httpd的程序由三个C源文件httpd.c、httpdSend.c和httpdRec.c编译生成,这三个文件还分别包含自己的头文件httpd.h 、httpdSend.h和httpdRec.h。通常情况下,C编译器将会输出三个目标文件httpd.o、httpdSend.o和httpdRec.o。假设httpd.c和httpdSend.c都要声明用到一个名为stdlibHttpd的文件,但httpdRec.c不用。即在httpd.c和httpdSend.c里都有这样的声明:

#include “stdlibHttpd”

那么下面的文档就描述了这些文件之间的相互联系:

#makeFile 例子演示

1  httpd: httpd.o httpdSend.o httpdRec.o

2  cc httpd.o httpdSend.o httpdRec.o -o httpd

3  httpd.o : httpd.c httpd.h stdlibHttpd

4 cc -c httpd.c

5  httpdSend.o : httpdSend.c httpdSend.h stdlibHttpd

6  cc -c httpdSend.c

7  httpdRec.o : httpdRec.c httpdRec.h

8  cc -c httpdRec.c

以上就是一个简单的Makefile描述文件

从描述文件可以看出,第一个字符为 # 的行为注释行。

第一行表示 httpd程序需要由httpd.o httpdSend.o httpdRec.o 这三个目标文件组成,表示依赖关系的时候需要采用:

第二行表示 就是执行cc命令 编译生成httpd

第3,4行 第5,6行 第7,8行

在make命令中 ,会自动判断文件的最后一次修改时间,来决定所生成的文件是否需要重新编译.

Makefile描述文件一般需要包含以下内容:

1 宏定义 (变量定义)

2 源文件之间的相互依赖关系

3 可执行的命令

Makefile文件中允许使用变量,当变量的字符大于一个字符的时候,需要采用();如下所示

下面都是有效的宏引用:

$(bianLiang)

$X

$(X)

其中$X 和$(X)所表达的效果是一致的

使用变量,可以避免描述文件中过多的长文件,使描述文件更加清晰,修改方便.

#定义一个变量表示文件集合

fileAll= httpd.o httpdSend.o httpdRec.o

httpd: $(fileAll)

cc $(fileAll) -o httpd

一般情况下会在Makefile 的最后还会加入标签 clean ,用来执行一些清除操作 例如 删除安装程序 删除目标文件,例如:

clean:

rm -f *.o

rm -f httpd

运行 make clean 时,将执行 rm -f *.o rm -f httpd 命令,将删除所有目标文件和httpd文件。

综上所述,一个简单的Makefile文件就可以编写完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值