24 篇 Makefile 核心教程,从入门到工程级交付,一次讲透

发布时间:2026/10/8 12:27:19
24 篇 Makefile 核心教程,从入门到工程级交付,一次讲透 一、专栏文章目录二、这个专栏在做什么我把《Makefile 核心教程》拆成了 24 篇,不是为了凑篇数,而是因为这个主题有一个很清晰的学习阶梯。跟着走,你会经历三个阶段。第一阶段:把语法彻底变成肌肉记忆(1–11 篇)从最基础的规则语法开始,到注释、变量、伪目标、打印信息、通配符、模式规则、条件判断、循环、函数、隐含规则。这一阶段的写法很笨:一个知识点一篇文章,尽量只讲一件事,标题里那些一文讲透不是噱头,是我给自己定的规矩——能不假设读者已经懂任何东西。比如变量那一篇,我会讲清楚、:、?、在求值时机上的真实差别(这是 90% 教程糊弄过去的地方),而不是丢一句即时展开和延迟展开的区别你自己体会;比如函数那一篇,$(subst)、$(patsubst)、$(strip)、$(foreach)、$(call)、$(eval)会按能干什么 / 什么时候用分组,顺手说清$(call)和$(eval)这对容易误用的组合。这一阶段读完,你的标准是:看到任何一份陌生 Makefile,不会慌,能一行一行读下去,知道每一行的意图。第二阶段:从能编译到能组织(12–18 篇)这是教程最容易跳过、而真实项目最花钱的部分。文件包含:多个 Makefile 如何拆分,include的执行时机,以及那个经典的文件不存在还找不到规则的问题。多目标构建:一条命令同时产出 app、lib、test,依赖关系怎么排。多目录递归 Make:GNU Make 官方的经典范式。它为什么这么设计,-C到底做了什么,子 Make 怎么把变量传给父 Make(靠环境变量,不是靠命令行——这个细节能省你半天)。多目录非递归 Make:单一 Makefile 驱动整个项目,用$(eval) 变体变量组合出每个目录一个 Makefile 片段但只有一个执行上下文的写法。这一篇我会把两种方案放在一起对比,告诉你什么时候该递归、什么时候必须非递归,而不是只吹一种。静态库的构建与链接:ar的参数、ranlib、符号表,以及最常见的那个坑——链接顺序。动态库的构建与链接:-fPIC为什么每个编译单元都要加,-shared、-Wl,-soname、-rpath、-ldl,以及运行时搜索路径的三种解法(LD_LIBRARY_PATH/rpath/ 装到系统目录)各自的适用场景。链接第三方库:pkg-config 到底在做什么,交叉编译时为什么PKG_CONFIG_LIBDIR必须改,静态库与动态库混链的顺序与--whole-archive的时机。这一阶段读完,你的标准是:能从一个空目录开始,为一个真实的中小型项目(多目录 库 第三方依赖 交叉编译)搭出一套自己的构建骨架。第三阶段:让它配得上交付两个字(19–24 篇)这是我私心最想写的部分。大部分教程讲到编译通过就结束了,但你的代码离开你的机器,还要经历打包、发布、被别人构建、被 CI 反复执行。真正的工程,是在这里开始出问题的。交叉编译实战:从零配置一条 ARM / RISC-V 工具链,讲清CC、CROSS_COMPILE约定、sysroot、--sysroot与--sysroot之外那堆参数的区别、如何验证交叉编译器产物真的是目标架构的。多编译模式与一键切换:Debug / Release / Sanitizer / 覆盖率,如何用一层变量抽象出配置,然后make moderelease一键切换。这是我自己项目里用得最多的一个模式,会给出完整可用的一份设计。跨平台构建:Linux / macOS / Windows,差异集中在哪几处(换行、路径分隔符、ar参数、shell 差异、rm -f与del),以及怎么用条件赋值把它们抹平。自动化打包与发布:从能编译到可交付。目标文件、压缩、校验和、版本号注入、打包脚本、CI 里怎么串、make dist怎么做一份可复现的 tarball。这一篇里出现的很多细节,是从发版失败一次换来的。万能模板:一份可以直接拷走使用的通用 Makefile,适配绝大多数 C/C 项目。这份模板不是玩具,它是把前面所有知识点收敛成一处——你能一眼看懂每一块为什么这么写,也能放心地改。调试与优化:编译报错怎么定位(从链接错误反查是哪个符号、哪个库、哪个顺序)、增量构建的正确姿势(-MMD -MP与依赖文件)、-fsanitize怎么配、并行构建-j为什么会让某些 Makefile 炸掉、常见提速手段和它们各自的代价。三、写给谁零基础、想要从零入门 Makefile 的初学者日常使用 Makefile 进行项目工程构建的开发工程师有基础、希望深耕 Makefile 实现进阶提升的开发者如果你要的只是能写个简单 Makefile,那前 11 篇就够了,按需读,不必勉强。如果你要的只是能写个简单 Makefile,那前 11 篇就够了,按需读,不必勉强。四、关于写法有几条我一直在坚持,顺便说在这里:无法简单清晰地阐述一件事物代表你尚未完全掌握它。越是理解透彻的人越愿意用最简单通俗的语言讲清道理越能用大白话讲透反而认知浅薄、一知半解的人总偏爱用深奥繁复的词汇包装自己越爱堆砌晦涩术语故作高深。我的技术写作理念褪去晦涩术语用浅显易懂的文字拆解技术核心兼顾零基础入门读者。能把复杂原理说得简单明白也是对自身技术功底最好的复盘与精进。五、这 24 篇,现在入手最划算前 11 篇文章也同步发布在了公众号嵌入式技术部落但是不提供源码您可以先看这 11 篇文章看看文章质量如果觉得不错想要进阶那么可以直接购买该专栏源码链接专栏文章内部都有提供。如果您只是想学习基础那么这 11 篇完全足够了。有需要可微信小程序小报童搜索萧邯嵌入式笔记购买专栏。另外随着文章的更新价格也会同步上涨。该专栏后续新增内容持续更新一次购买永久拥有不再额外收费。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询