news 2026/4/18 10:11:13

【把Linux“聊”明白】自动化构建-make/Makefile详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【把Linux“聊”明白】自动化构建-make/Makefile详解

一、make/Makefile是什么?

简单来说,make是一条命令,Makefile是一个文件,两个搭配使用,完成项目自动化构建。 详解: 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。 makefile带来的好处就是⸺“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释makefile中指令的命令工具。

二、make/Makefile的基本概念

首先,建立一个Makefile文件

代码语言:javascript

AI代码解释

touch Makefile # Makefile/makefile都可以,我们习惯于Makefile

然后,保证你有个mypro.c的c文件,然后对Makefile写入:

代码语言:javascript

AI代码解释

mypro:mypro.c gcc mypro.c -o mypro # 前面的空格是一个tab的结果
依赖关系和依赖方法说明

在这里插入图片描述

即mypro依赖于mypro.c,而gcc myproc.c -o myproc 正是这种依赖方法。

在对Makefile写入上述依赖关系与依赖方法之后,我们就可以直接使用make命令了。

在这里插入图片描述

上面我们只是完成了Makefile的冰山一角,有个基础的认识。 我们可以用Makefile快速生成可执行,那有没有快速清理项目的呢?

项目清理

我们可以在已经有的Makefile再进行增加:

代码语言:javascript

AI代码解释

mypro:mypro.c gcc mypro.c -o mypro .PHONY:clean clean: # 可以没有依赖关系 rm -f myproc

有了上面的Makefile,我们就可以进行项目清理了: 像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要make执行。即命令⸺make clean,以此来清除所有的目标文件,以便重编译。

在这里插入图片描述

.PHONY **但是一般我们这种clean的目标问文件,我们将它设置为伪目标,用.PHONY修饰,伪目标的特性是总是被执行的**。 我们也可以对第一组依赖关系用.PHONY修饰,来看看效果: 未修饰之前:

在这里插入图片描述

修饰之后:

在这里插入图片描述

在这里插入图片描述

有这些理解,我们来看看什么叫做总是被执行?

什么叫做总是被执行?

我们要知道,在编译的时候,默认老代码(以前编译过)是不会别重新编译的,很好理解,但是编译器是如何知道你是老代码还是新代码/更改过的代码。


www.dongchedi.com/article/7594897166766965272
www.dongchedi.com/article/7594897310665245246
www.dongchedi.com/article/7594897192310407705
www.dongchedi.com/article/7594897631617794585
www.dongchedi.com/article/7594896580080435737
www.dongchedi.com/article/7594895704896684568
www.dongchedi.com/article/7594897374330503705
www.dongchedi.com/article/7594895618720449048
www.dongchedi.com/article/7594896034183397912
www.dongchedi.com/article/7594896087656694334
www.dongchedi.com/article/7595300698343260734
www.dongchedi.com/article/7595300086620734014
www.dongchedi.com/article/7595300794661257753
www.dongchedi.com/article/7595300922285146649
www.dongchedi.com/article/7595300794661159449
www.dongchedi.com/article/7595301535278858814
www.dongchedi.com/article/7595300053246837310
www.dongchedi.com/article/7595298997771141656
www.dongchedi.com/article/7595298747215987224
www.dongchedi.com/article/7595298653444080190
www.dongchedi.com/article/7595299173835276862
www.dongchedi.com/article/7595293834620191257
www.dongchedi.com/article/7595294214674596377
www.dongchedi.com/article/7595294735703966270
www.dongchedi.com/article/7595294214674825753
www.dongchedi.com/article/7595269939515703870
www.dongchedi.com/article/7595270106293600793
www.dongchedi.com/article/7595268901785584153
www.dongchedi.com/article/7595268784974545433
www.dongchedi.com/article/7595270592459506238
www.dongchedi.com/article/7595268816629219865
www.dongchedi.com/article/7595267640395235902
www.dongchedi.com/article/7595267822872166937
www.dongchedi.com/article/7595266120056422936
www.dongchedi.com/article/7595265326464795161
www.dongchedi.com/article/7595264479055970878
www.dongchedi.com/article/7595263814942376472
www.dongchedi.com/article/7595263889965924926
www.dongchedi.com/article/7595264219466121753
www.dongchedi.com/article/7595261441830486590
www.dongchedi.com/article/7595257155528409624
www.dongchedi.com/article/7595257148431974937
www.dongchedi.com/article/7595255577883198014
www.dongchedi.com/article/7595257264999858713
www.dongchedi.com/article/7595255131160085054
www.dongchedi.com/article/7595254038942401086
www.dongchedi.com/article/7595272535034430014
www.dongchedi.com/article/7595273235844137496
www.dongchedi.com/article/7595271162356302398
www.dongchedi.com/article/7595269071357231641
www.dongchedi.com/article/7595269220477567512
www.dongchedi.com/article/7595268287076958782
www.dongchedi.com/article/7595269071357264409
www.dongchedi.com/article/7595268315833270809
www.dongchedi.com/article/7595265492903363096
www.dongchedi.com/article/7595265055567299096
www.dongchedi.com/article/7595265773019841049
www.dongchedi.com/article/7595265891500114494
www.dongchedi.com/article/7595264904798978585
www.dongchedi.com/article/7595263429863195161
www.dongchedi.com/article/7595261995696800280
www.dongchedi.com/article/7595258440394818073
www.dongchedi.com/article/7595256795065893401
www.dongchedi.com/article/7595256961541767704
www.dongchedi.com/article/7595257257731408446
www.dongchedi.com/article/7595253896583774745
www.dongchedi.com/article/7595252944199778841

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 9:45:24

【把Linux“聊”明白】vim编辑器完全指南

一、基本概念首先,我们要知道,Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以在linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符…

作者头像 李华
网站建设 2026/4/18 9:19:46

如何快速掌握Ref-Extractor:文献引用管理的终极解决方案

如何快速掌握Ref-Extractor:文献引用管理的终极解决方案 【免费下载链接】ref-extractor Reference Extractor - Extract Zotero/Mendeley references from Microsoft Word files 项目地址: https://gitcode.com/gh_mirrors/re/ref-extractor 还在为丢失参考…

作者头像 李华
网站建设 2026/4/17 6:52:44

QQ空间历史说说终极备份指南:一键永久保存你的数字青春

QQ空间历史说说终极备份指南:一键永久保存你的数字青春 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年我们在QQ空间写下的青涩文字吗?从"今天…

作者头像 李华
网站建设 2026/4/18 6:31:33

Qwen3-VL多模态体验指南:小白3步上手,1块钱起玩

Qwen3-VL多模态体验指南:小白3步上手,1块钱起玩 你是不是也经常刷到那些“AI看图写爆款文案”的视频?看着别人上传一张产品图,AI立马生成一段生动有趣的社交媒体文案,心里直痒痒。但一想到自己那台轻薄的MacBook跑不动…

作者头像 李华
网站建设 2026/4/18 6:31:13

GetQzonehistory:三步永久保存你的QQ空间青春回忆

GetQzonehistory:三步永久保存你的QQ空间青春回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那年深夜发的第一条说说吗?那些承载着青春印记的文字和图…

作者头像 李华
网站建设 2026/4/18 6:27:31

用万物识别模型做了个智能导览项目,全过程分享

用万物识别模型做了个智能导览项目,全过程分享 近年来,随着多模态AI技术的成熟,图像理解正从“识别物体”迈向“理解场景”。在这一趋势下,我尝试将阿里开源的万物识别-中文-通用领域模型应用于一个实际项目——智能导览系统。该…

作者头像 李华