Linux项目的自动化工具-make/Makefile

前言:

  在linux中,项目自动化工具是一个非常重要的存在,这能侧面的取决于你能否独立创作出一个大型的项目,因此我们便大概知道了这种东西到底用在了哪里。Makefile带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率,使得我们能够更快的完成一系列的任务,而其中make是一条命令,Makefile则是一个文件,两者相结合便可完成项目的自动化构建了。

代码案例:

那如何使用make与Makefile呢,那第一步必然是创建普通的代码文件,在linux环境下我们直接使用vim test.c创建一个测试代码

#include<stdio.h>

int main()
{
printf("hello makefile\n");
return 0;
}

以上便是一段普通的c语言代码,在通过GCC的一系列编译后将会生存,test.o、test.i、test.s这些文件,接着我们便要开始创建自动化工具makefile的文件了,在linux环境下我们使用makefile直接开始创建makefilie的代码

.PHONY:clean
clean:
rm -f test.i test.o test.s test

 通过以上的代码我们便可以编译出一个最简单的自动化工程,自动删除test的除了展示代码以外的其他程序,当我们在命令行里输入make clean 便可以使用了。

make的原理:

那么make是如何工作的呢,在我们在命令行里输入make的时候,便会有一下的情况。

1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“hello”这个文件,并把这个文件作为最终的目标文件。
3. 如果hello文件不存在,或是hello所依赖的后面的hello.o文件的文件修改时间要比hello这个文件新(可以用 touch 测试),那么,他就会执行后面所定义的命令来生成hello这个文件。
4. 如果hello所依赖的hello.o文件不存在,那么make会在当前文件中找目标为hello.o文件的依赖性,如果找到则再根据那一个规则生成hello.o文件。(这有点像一个堆栈的过程)
5. 当然,你的C文件和H文件是存在的啦,于是make会生成 hello.o 文件,然后再用 hello.o 文件声明make的终极任务,也就是执行文件hello了。
6. 这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。
7. 在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。
8. make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。

以上便是对make与makefile的讲解,谢谢观看。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Maker-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值