一、Makefile基本知识点
1.makefile文件关系到整个工程的编译规则。(一个工程中的源文件不计其数,其按照类型,功能,模块分别存放在不同的目录中)
2.Makefile定义了一系列的规则来指定,那些文件需要先编译,那些文件需要重新编译。3.makefile像一个shell脚本一样,其中也可以执行操作系统的命令。
4.makefile一旦写好,只需要一个make命令就可以使得工程完全自动化编译,可以提高软件开发的效率。
二、Makefile的规则
1.目标文件:依赖文件
命令
2.每一个.o文件都有一组依赖文件,而.o文件又是目标文件的依赖文件。依赖关系的实质上就是说明了目标文件是由哪些文件生成的。
3.clean不是一个文件,它是一个动作的名字,所以make没有依赖文件,也就不会自动的去执行它后面的命令,所以要想执行它后边的命令就需要在make命令后,再执行clean这个命令。
all:ser
ser:ser.o thread.o
gcc -o ser ser.o thread.o -lpthread
ser.o:ser.c
gcc -c ser.c
thread.o:thread.c
gcc -c thread.c -g
clean:
rm -rf *.o ser
注意:此处命令行以tab键为开头
解释:all:ser --------> 表示最终生成的文件是ser
ser:ser.o thread.o ---------> ser的依赖文件是ser.o和thread.o
gcc -o ser ser.o thread.o -lpthread--------->链接的过程(thread.o是一个多线程文件所以加上了-lpthread)
ser.o:ser.c ---------> ser.o的依赖文件是ser.c
gcc -c ser.c ----------->
thread.o:thread.c ---------> thread.o的依赖文件是thread.c
gcc -c thread.c -g
clean:
rm -rf *.o ser ----------->执行clean命令后删除所有的.o文件
如下图中ser_file这个文件夹中会存在很多命令
执行make后文件将进行自动编译。
三、make的工作原则
make会一层一层的找文件的依赖关系,直到最终编译出第一个目标文件。在过程中如果出现错误则直接退出,并报错。