经常使用linux的人一定会接触到Makefile,编译程序的时候使用make & make install编译安装源代码。Makefile编译源代码有一下的规则:
1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。
Makefile的基本书写语法是
target ... : prerequisites ...
command
target是通过把prerequisites通过command生成的目标文件,通常target是.o的目标文件,prerequisites是.c和.h文件,command是gcc和编译选项。下面举个简单的例子说明:
CFLAGS = -Wall -O2CC&n