makefile的重要性
makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接-----但是不是所有的文件都需要重新编译,makefile能够记录文件的信息,决定在链接的时候需要重新编译哪些文件!
例子
#all:main.out
如果想要编译所有:make all,那么将会生成main.out可执行文件。
#main.out:main.o window.o model.o data.o
而要生成这个main.out,需要依赖main.o,window.o,model.o,data.o 4个文件。
#gcc -o main.out main.o window.o model.o data.o
这句是调用编译器编译,vc用的是cl。变异的时候可以加上很多的参数、定义的宏、链接库路径等。
宗旨
让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。
程序的编译原理
首先把源文件编译成中间代码文件,再windows下也就是.obj文件,UNIX下是.o文件 ------ 编译
然后把大量的Object File合成执行文件 ------ 链接