什么是makefile?
对于大多数的Windows程序员来讲,makefile可能不是那么重要,因为Windows的IDE都为程序员做好了这个工作。但是在Linux下编程,会不会写makefile,从侧面上说明一个人是否具备完成大型工程的能力。
makefile的作用
makefile是用来自动编译和链接的,一个大的工程会有很多的文件组成,每一个文件的改变都会导致工程的重新链接,但不一定所有的文件都需要重新编译。此时,我们的makefile就可以完成自动化编译,一旦写好,一个make命令,就可以完成整个工程的编译。
那什么是编译?
无论是C、C++,都要先将源文件编译成中间代码文件,在Windows下是.obj文件,在UNIX、Linux下是.o文件,这个过程就被称作为编译
链接
链接的主要是链接函数和全局变量,此时,链接器不管函数所在的源文件,只管函数的中间目标文件(.obj/.o文件)。
但在大多数的情况下,由于源文件过多,编译生产的目标文件也太多,而在链接的时候需要明显的指出中间目标文件,这就很不方便了。所以,我们需要给中间文件打包,在Windows下的这种包叫做“库文件”(.lib),在UNIX/Linux下是Archive File(.a)
清楚了程序编译和链接的过程,我们下来介绍makefile
make命令执行的时候需要一个makefile文件,告诉make如何去编译和链接程序