make是一个非常重要的编译工具,它将一个大型的项目分成若干个模块,可以帮助我们很清晰快捷的整理源文件。
安装:
apt-get install make
下面将用一个例子来表示:
hello.c文件通过调用max函数来得到两个数中的较大者
root@xhj-2:/usr/linuxProgramming/chapter3/les2# cat hello.c
#include <stdio.h>
#include "max.h"
int main(){
int a1=33;
int a2=21;
int maxNum=max(a1,a2);
printf("the max value is %d",maxNum);
return 0;
}
max.c文件定义了得到两个数中的较大者的函数
root@xhj-2:/usr/linuxProgramming/chapter3/les2# cat max.c
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
max.h定义了max函数的头文件
root@xhj-2:/usr/linuxProgramming/chapter3/les2# cat max.h
int max(int a,int b);
综上可知,他们相互之间有依赖关系,hello.c通过max.h文件调用了max.c中定义的max函数。
下面将给出在本例中的make file。
root@xhj-2:/usr/linuxProgramming/chapter3/les2# vim Makefile
1 # this is make file
2 hello.out:max.o hello.c
3 gcc max.o hello.c -o hello.out
4 max.o:max.c
5 gcc -c max.c
在make file中,实际上是一个自下而上的过程。在上面的例子中,第一行是注释,讲了这个文件的作用。正文的第一行的hello.out是我们最终要得到的文件,它是通过max.o和hello.c文件生成的,生成的命令就是第三行的“gcc max.o hello.c -o hello.out”。而max.o的生成需要max.c,也就是第四行,命令处在第五行。
**需要注意的是:**每一条编译的命令前面,例如第三行和第五行,前面都需要一个tab的空格。
在Makefil编写结束后,执行make语句就可以进行自动编译。原因:在默认的方式下,也就是我们只输入 make 命令。那么make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
root@xhj-2:/usr/linuxProgramming/chapter3/les2# make
gcc -c max.c
gcc max.o hello.c