【Linux】Make和Makefile快速入门
> 作者简介:?旧言~,目前大二,现在学习Java,c,c++,Python等
> 座右铭:松树千年终是朽,槿花一日自为荣。> 目标:熟练掌握Make和Makefile的使用
> 毒鸡汤:人生就像一条河,左岸是无法忘却的回忆,右岸是值得把握的青春,中岸是正在燃烧的面孔。
> 望小伙伴们点赞👍收藏?加关注哟💕💕?
🌟前言
????????不知道大家还记得我们写的进度条,里面就有们的makefile,在哪里面我们没有讲解,拿到这里我们深度解剖,也可以再次回顾我们的进度条,那我们话不多说,进入我们今天的主题----【Linux】Make和Makefile快速入门🤗🤗。
??浅谈Make和Makefile
什么是make
????????linux中make是一个构建工具,用于自动化编译和构建软件项目。它的作用是允许开发人员管理和维护复杂的软件项目,自动化编译过程并生成可执行文件。软件项目通常由多个源代码文件和依赖项组成。每个文件都需要编译为目标文件,然后将这些目标文件链接在一起生成最终的可执行文件,使用make工具可以简化这个过程,因为它会根据一组规则自动检测并构建项目的不同部分。
什么是makefile
????????在linux中,makefile是一个工程文件的编译规则,描述了整个工程的编译和链接等规则;其中包含了哪些文件需要编译,哪些文件不需要编译,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重建等等。
总结
简单的来讲:make是指令而Makefile是一个文件
?编写Makefile
编写一个Makefile能细节到空格一个也不能多也一个也不能少的地步。
这里我们先创建两个文件:
- test.c:
- Makefile:(makefile也可以)
?我们这里编写test.c和Makefile:
- Makefile:(makefile也可以)
test:test.c
gcc test.c -o test
.PHONY:clean
clean:
rm -f test
这里我们不讲解里面的内容,后面会详细介绍的😬😬,摁住大家躁动的心
注意事项:
- makefile 的文件名必须是 makefile/Makefile,不能是其他名称,否则 make 识别不了
- 依赖文件可以有多个,也可以没有
- 依赖方法必须以 [Tab] 键开头,特别注意不能是四个空格
?make原理
🌙make的使用
在Linux下,输入 make 命令后,make 会在当前目录下找寻名为 "Makefile/makefile"?的文件
如果找到,它会把文件中的第一个目标文件作为最终的目标文件
如果找不到,就打印提示信息。
🌙make的依赖性
????????不知道大家还记得我们编译的过程中有四大步骤:预处理,编译,汇编,连接。这四个步骤严格按照make的依赖性的,一层又一层地去找文件的依赖关系,直到最终编译出最开始我们需要的目标文件。
咱们先上代码后分析:
test:test.o
gcc test.o -o test
test.o:test.s
gcc -c test.c -o test.o
test.s:test.i
gcc -S test.i -o test.s
test.i:test.c
gcc -E test.c -o test.i
.PHONY:clean
clean:
rm -f test.i test.s test.o test
代码分析:
运行结果:
🌙文件清理
文件清理指令:
make clean
会用 .PHONY 将其设置为伪目标:
.PHONY:clean
clean:
rm -f test.i test.s test.o test
运行结果:
注意事项:
🌙知识拓展
Makefile中还有一些自动化变量,常用的有下面这些:
自动化变量 | 说明 |
---|---|
$@ | 规则的目标 |
$< | 规则的第一个依赖 |
$? | 所有比目标新的依赖的列表 |
$^ | 所有的依赖的列表,会自动去重 |
?🌟结束语
? ? ? ?今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!