什么是makefile?为何要用makefile?
Makefile是在unix/linux系统下的一种工具,可以使用makefile一键完成整个工程的编译链接过程。makefile定义了一系列的规则来指定,一个工程中的哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。而makefile的“自动化编译”过程,将大大简化工程开发中的编译过程及编译时间。
代码的编译和链接
编译:将源文件编译成中间代码文件(Unix下是.o文件)。编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置,只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件。
链接:主要是链接函数和全局变量,将中间目标文件链接成应用文件。链接器并不管函数所在的源文件,只管函数的中间目标文件,在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便。所以,我们要给中间目标文件打个包。在Windows下这种包叫“库文件”,也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。