make命令是一个常用的编译命令,尤其在C/C++开发中,make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译;
makefile文件是按照规定格式编写,需说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系;
首次执行make命令时,编译所有相关文件,之后再执行make命令时,以增量方式进行编译,即只对修改的源文件相关的目标文件进行编译;
注:许多tarball格式的开源软件,解压后先执行./configure,再执行make,然后执行make install进行安装;
makefile文件支持include,即把一些基本依赖规则写在一个公共文件中,其他makefile文件包含此文件;
通常公共makefile文件命名为common.mk
一、make命令
make命令后接参数,称为目标;
常见目标如下:
make all:编译程序、库和文档(等价于make)
make install:安装已编译的程序
make uninstall:卸载已安装的程序
make clean:删除由make命令产生的文件,通常删除目标文件.o
make distclean:删除由./configure产生的文件
make check:测试刚编译的软件
make installcheck:检查安装的库和程序
make dist:重新打包成packname-version.tar.gz
执行make命令时,需要一个Makefile文件,以告诉make命令如何编译和链接程序;
二、程序的编译和链接
一般在C/C++开发中,首先将源文件编译成目标文件(Windows下.obj文件,Unix下.o文件)——编译compile,再将目标文件合成执行文件——链接link;
三、make命令如何工作?
1 make在当前目录下寻找“Makefile”或“makefile”文件
2 若找到,查找文件中的第一个目标文件.o
3 若目标文件不存在,根据依赖关系查找.s文件
4 若.s文件不存在,根据依赖关系查找.i文件
5 若.i文件不存在,根据依赖关系查找.c文件,此时.c文件一定存在,于是生成一个.o文件,再去执行
四、Makefile文件格式
1 概述
Makefile文件由一系列规则rules构成,每条规则形式如下:
:
[Tab]