news 2026/6/9 21:21:56

【把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/6/9 16:11:47

DeepSeek-R1-Distill-Qwen-1.5B实战:智能技术文档翻译工具

DeepSeek-R1-Distill-Qwen-1.5B实战:智能技术文档翻译工具 1. 引言 1.1 业务场景描述 在现代软件开发和跨国技术协作中,技术文档的多语言支持已成为团队高效沟通的关键环节。无论是开源项目的国际化、企业内部知识库建设,还是AI模型说明文…

作者头像 李华
网站建设 2026/6/9 19:04:56

LoRA训练成本计算器:输入参数自动算价格

LoRA训练成本计算器:输入参数自动算价格 你是不是也遇到过这种情况:想训练一个自己的LoRA模型,画风、角色都能自定义,听起来很酷。但一想到要花钱买GPU、租服务器、跑训练任务,心里就开始打鼓——这到底得花多少钱&am…

作者头像 李华
网站建设 2026/6/9 16:11:28

告别繁琐配置!用Qwen3-0.6B镜像秒搭AI问答系统

告别繁琐配置!用Qwen3-0.6B镜像秒搭AI问答系统 随着大模型技术的快速演进,如何高效部署一个功能完整、响应迅速的AI问答系统成为开发者关注的核心问题。传统部署方式往往涉及复杂的环境配置、依赖管理与接口调试,耗时且易出错。而借助Qwen3-…

作者头像 李华
网站建设 2026/6/9 16:07:39

PDF-Extract-Kit增量处理:TB级文档云端分批解析,不爆内存

PDF-Extract-Kit增量处理:TB级文档云端分批解析,不爆内存 你有没有遇到过这样的情况:手头有一堆几十年前的老报纸PDF合集,总大小动辄几十GB甚至上TB,想做数字化归档或内容提取,结果刚打开文件电脑就卡死&a…

作者头像 李华
网站建设 2026/6/9 16:14:00

ProGuard Maven插件终极指南:构建更安全、更高效的Java应用

ProGuard Maven插件终极指南:构建更安全、更高效的Java应用 【免费下载链接】proguard-maven-plugin ProGuard Maven plugin that supports modularised ProGuard packages 项目地址: https://gitcode.com/gh_mirrors/pr/proguard-maven-plugin ProGuard Mav…

作者头像 李华
网站建设 2026/6/9 16:13:12

当SaaS从效率工具变成安全隐患:企业为什么需要私有化数字底座

过去五年,中国企业的SaaS采用速度呈指数级增长。从OA到CRM,从HR系统到协同办公,几乎每家企业都在同时使用十几甚至几十个SaaS服务。部门越多,工具越多,表面上效率似乎越来越高。 但一个悖论正在浮现:企业越…

作者头像 李华