什么是makefile?说白了就是定义一个规则,让make指令按照上面的规则去编译和链接程序
想要更熟悉makefile的同学可以参考一下陈皓所写的makefile教程
首先我们先要建立一个.c文件
vi hello.c
进入vi编译器
#include<stdio.h>
void main()
{
printf("hello world hi\n");
}
然后Esc :wq保存
创建makefile文件
vi makefile
进入vi 编译makefile
hello:hello.c
#gcc hello.c -o hello // 这里应该是Tab键加$gcc hello.c -o hello
然后Esc :wq 保存
这里我要解释一下makefile文件里面的代码
首先
冒号前面的hello是一个目标文件,也就是你下一步make之后要执行的文件
冒号后面的hello.c就是要生成那个hello所需要的文件或是目标
第二行的#gcc hello.c -o hello 也就是make需要执行的命令 这里我要强调一下 #一定不能少,如果没有这个符号执行make指令式会报错如果你不是超级用户也可以使用$
最后在linux上敲上make
编译成功,然后再敲上你刚才的那个目标文件./hello
屏幕上就会显示出 hello world hi
做完这步,我想还有很多人不明白makefile到底是什么个意思,本来多么简单的程序非要makefile一下,多麻烦,之前我也是这么想的,这个hello world直接用gcc编译多简单,但是如果你要是做大规模的程序时,gcc就会显得相当的繁琐了。
接下来,我们把这个hello world分成三个.c 和.h 文件再用makefile编译一下。
vi hello.c
#include<stdio.h>
#include "world.h"
#include "hi.h"
void main()
{
printf("hello\n");
world();
hi();
}
vi world.c
#include <stdio.h>
void world()
{
printf("world\n");
}
vi hi.c
#include <stdio.h>
void hi()
{
printf("hi\n");
}
vi world.h
void world();
vi hi.h
void hi();
然后再修改makefile
vi makefile
hello:hello.o world.o hi.o
#gcc hello.o world.o hi.o -o hello 这里应该是Tab键加$gcc hello.o world.o hi.o -o hello
hello.o:hello.c
#gcc -c hello.c 这里应该是Tab键加$gcc -c hello.c
world.o:world.c
#gcc -c world.c 这里应该是Tab键加$gcc -c world.c
hi.o:hi.c
#gcc -c hi.c 这里应该是Tab键加$gcc -c hi.c
然后make
在执行./hello
屏幕上会得到
hello
world
hi
我想大家多少会明白了makefile的用法了,处理大量的文件时,makefile就对我们有很大的帮助了!