Bootstrap

Linux系统下----make命令详解,地球人都在用的“编译工具”

1.功能介绍

make命令是用来自动完成大批量源文件编译工作的维护工具;能够建立不同文件之间的依赖关系自动识别被修改的源文件并重新编译,避免不必要的编译。(简言之,就是一个编译工具,并且非常实用。)

2.准备工作、写法和用法

(1)准备工作
首先将所有项目中要处理的文件放到同一个文件目录下,并且在该目录下新建一个名为Makefile的文件(推荐使用Makefile)。新建方法:在该目录下打开终端,输入如下命令即可。

vi Makefile

在Makefile文件中可以编写多个语句,这些语句我们可以理解为一条条的规则,比如文件之间的依赖关系,源文件的编译和清理生成文件等等规则。
(2)规则的写法
(首先说说源文件的编译顺序:源文件–>汇编文件–>目标文件–>可执行文件
1)对于一个源文件的编译规则写法:
首先我们要对源文件(demo.c)处理将其生成对应的目标文件(即demo.o)可以这么写:

demo.o:demo.c
	gcc -c demo.c//注意:gcc前是一个Tab

其次我们要将生成的目标文件(demo.o)转换成可执行文件:

demo:demo.o
	gcc -o demo demo.o

2)多个源文件之间的依赖关系规则的写法(此处的文件有main.c和test.c):
同上面一样依旧要先写生成目标文件在生成可执行文件,但是此处要把两个目标文件(main.o和test.o)依赖在一起,生成一个名为mainall的可执行文件。

mainall:main.o test.o
	gcc -o mainall main.o test.o
main.o:main.c
	gcc -c main.c
test.o:test.c
	gcc -c test.c

3)清除所有生成文件规则:
下面是删除所有目标文件和可执行文件的代码。

clean:
	rm -rf mainall demo *.o

(3)Makefile文件的用法
写完Makefile文件后,就可以在终端执行命令了,命令的写法:make+空格+规则名。
例如:执行生成源文件demo.c的可执行文件的命令:
make demo 的执行结果
接着在文件中就生成了可执行文件demo。

3.注意事项

(1)输入make命令时,make命令总是默认第一个规则为目标规则。
例如:Makefile文件的内容如下:

all:mainall demo
mainall:main.o test.o
	gcc -o mainall main.o test.o
main.o:main.c
	gcc -c main.c
test.o:test.c
	gcc -c test.c
demo:demo.o
	gcc -o demo demo.o
demo.o:demo.c
	gcc -c demo.c
clean:
	rm -rf mainall demo *.o

执行make命令时,会执行第一个all:mainall demo规则。
(2)在Makefile文件中每个gcc、rm等命令前都必须有一个Tab。

4.“买家秀”

(1)用make命令方便了编译源文件的步骤
每次修改源文件都要重新编译一遍,用make命令后,提前写好Makefile文件,直接输入make+规则名就可以。
(2)实现了大批量编译程序的功能
(3)实现了编译时多个文件之间的连接
再也不用将整个程序的代码都写在一个文件里了!
(4)用户12138的分享
自己写的Makefile文件(第一条规则写了个all,就是执行所有规则的规则,用的时候一个make就全部编译完了),用起来很方便,好评!
Makefile文件

5.其他

文章如有失误之处,欢迎各位大佬出面指正!!

;