news 2026/5/1 7:15:04

【把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/1 6:54:55

TradingView图表库终极集成指南:5分钟构建专业金融图表应用

TradingView图表库终极集成指南:5分钟构建专业金融图表应用 【免费下载链接】charting-library-examples Examples of Charting Library integrations with other libraries, frameworks and data transports 项目地址: https://gitcode.com/gh_mirrors/ch/charti…

作者头像 李华
网站建设 2026/4/26 0:20:49

小米智能家居C控制终极指南:从零打造个性化智能生活

小米智能家居C#控制终极指南:从零打造个性化智能生活 【免费下载链接】mi-home С# API for Xiaomi Mi Home devices 项目地址: https://gitcode.com/gh_mirrors/mi/mi-home 还在为小米官方APP的功能限制而烦恼吗?想要实现更灵活、更个性化的智能…

作者头像 李华
网站建设 2026/5/1 6:55:03

开源模型也能强逻辑?DeepSeek-R1思维链能力评测与部署

开源模型也能强逻辑?DeepSeek-R1思维链能力评测与部署 1. 背景与技术定位 近年来,大语言模型在自然语言理解、代码生成和逻辑推理等任务中展现出惊人能力。然而,主流高性能模型往往依赖高算力GPU进行推理,限制了其在边缘设备或隐…

作者头像 李华
网站建设 2026/5/1 6:54:13

没GPU如何测试Qwen-Image?云端按需付费方案详解

没GPU如何测试Qwen-Image?云端按需付费方案详解 你是不是也遇到过这种情况:AI课程老师布置了作业,要求体验最新的Qwen-Image图像生成模型,结果发现学校机房没有GPU,自己的笔记本连显卡都没有,或者只有个入…

作者头像 李华
网站建设 2026/5/1 6:09:57

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 在当今Java…

作者头像 李华
网站建设 2026/5/1 6:15:05

小鹏汽车:以AI重构万人团队招聘,赋能一线业务管理

在“AI招聘 潮头之上”2025NFuture最佳雇主颁奖盛典深圳站现场,小鹏汽车营销服招聘负责人冯晓莲分享了题为《用AI赋能一线管理者》的深度实践。面对业务快速扩张带来的海量人才需求,她坦言团队曾面临巨大挑战,而AI工具的引入,帮助…

作者头像 李华