news 2026/5/30 15:03:43

【把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/5/23 15:38:58

Steam库存管理效率提升方案:智能化批量操作指南

Steam库存管理效率提升方案:智能化批量操作指南 【免费下载链接】Steam-Economy-Enhancer 中文版:Enhances the Steam Inventory and Steam Market. 项目地址: https://gitcode.com/gh_mirrors/ste/Steam-Economy-Enhancer 作为一名Steam玩家&…

作者头像 李华
网站建设 2026/5/20 20:34:14

一键启动Qwen All-in-One:开箱即用的多任务AI引擎

一键启动Qwen All-in-One:开箱即用的多任务AI引擎 1. 背景与核心价值 在边缘计算和资源受限场景中,部署多个AI模型往往面临显存不足、依赖冲突和启动延迟等问题。传统方案通常采用“LLM BERT”组合分别处理对话生成与情感分析任务,但这种架…

作者头像 李华
网站建设 2026/5/20 11:44:26

DeepSeek-R1-Distill-Qwen-1.5B为何输出\n\n?思维链修复教程

DeepSeek-R1-Distill-Qwen-1.5B为何输出\n\n?思维链修复教程 1. 背景与问题定义 在部署和使用轻量级大语言模型的过程中,开发者常会遇到模型输出异常的问题。其中,DeepSeek-R1-Distill-Qwen-1.5B作为一款面向边缘设备优化的蒸馏模型&#x…

作者头像 李华
网站建设 2026/5/20 13:17:16

Proteus 8.9 Win11兼容安装教程:实战演示全流程

如何在 Windows 11 上成功安装 Proteus 8.9?一文讲透兼容性难题与实战部署 你有没有遇到过这种情况:手头有个老项目必须用 Proteus 8.9 打开,可你的电脑已经升级到 Win11,结果点开安装包就报错“无法写入”或直接闪退?…

作者头像 李华
网站建设 2026/5/26 2:31:26

从Qwen到DeepSeek-R1:模型蒸馏带来的性能飞跃

从Qwen到DeepSeek-R1:模型蒸馏带来的性能飞跃 1. 引言 1.1 技术背景与演进路径 近年来,大语言模型(LLM)在自然语言理解、代码生成和数学推理等任务上取得了显著进展。然而,随着模型参数量的不断增长,部署…

作者头像 李华
网站建设 2026/5/27 14:43:54

DeepSeek-R1部署教程:边缘计算场景

DeepSeek-R1部署教程:边缘计算场景 1. 引言 随着人工智能模型规模的不断增长,大模型在云端推理中表现出色,但在隐私保护、低延迟响应和离线可用性方面面临挑战。边缘计算场景下,对轻量化、高效率且具备强逻辑推理能力的本地化模…

作者头像 李华