makefile基础

在这里插入图片描述
在这里插入图片描述
make的工作流程:
1.make 会在当前目录下找名字叫“Makefile”或“makefile”的文件。
2.如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会
找到“main”这个文件,并把这个文件作为最终的目标文件。
3.尝试更新Makefile中第一条规则的目标main,第一条规则的目标称为缺省目标,
只要缺省目标更新了就算完成任务了,其它工作都是为这个目的而做的。
4.由于我们是第一次编译,main文件还没生成,显然需要更新,但规则说必须先
更新了main.o、stack.o和maze.o这三个条件,然后才能更新main。
5.查找以这三个条件为目标的规则,这些目标文件也没有生成,也需要更新,所以
执行相应的命令(gcc -c main.c、gcc -c stack.c和gcc -c maze.c)更新它们。
6.最后执行gcc main.o stack.o maze.o -o main更新main。

小结:make 会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make 就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make 根本不理。make 只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。

make如何做到只重新编译修改过的?
1.make仍然尝试更新缺省目标,首先检查目标main是否需要更新,这就要检查三
个条件main.o、stack.o和maze.o是否需要更新。
2.make会进一步查找以这三个条件为目标的规则,然后发现main.o和maze.o需要
更新,因为它们都有一个条件是maze.h,而这个文件的修改时间比main.o和
maze.o晚,所以执行相应的命令更新main.o和maze.o。
3.既然main的三个条件中有两个被更新过了,那么main也需要更新,所以执行命
令gcc main.o stack.o maze.o - o main更新main。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值