尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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 篇完全足够了。有需要可微信小程序小报童搜索萧邯嵌入式笔记购买专栏。另外随着文章的更新价格也会同步上涨。该专栏后续新增内容持续更新一次购买永久拥有不再额外收费。
RELATED

相关推荐

用GitHub仓库搭建个人技能管理系统:从分类评估到持续迭代

用GitHub仓库搭建个人技能管理系统:从分类评估到持续迭代

skills这个单词丢在项目仓库里,看起来就是一个平平无奇的文件夹名,或者个人知识库里的一个标签。但如果你真的在 GitHub 上建过叫这个名字的仓库,或者在笔记软件里专门开了一个叫“skills”的目录,你很快就会意识到:这…

📅 2026/10/8 12:27:24
Claude Code 命令大全:TaoToken 统一 Key 接入下的斜杠命令与快捷键速查

Claude Code 命令大全:TaoToken 统一 Key 接入下的斜杠命令与快捷键速查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/8 12:22:23
分不清 Trae、通义灵码、MarsCode、Cursor?用 TaoToken 统一 Key 按场景选型不踩坑

分不清 Trae、通义灵码、MarsCode、Cursor?用 TaoToken 统一 Key 按场景选型不踩坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/8 12:22:23
MORE NEWS

更多资讯

📰

text-to-cad实战:从一句描述到可编辑B-rep模型的路与坑

做这行久了,你会发现一个很有意思的现象:凡是带"文生"两个字的AI工具,落地时基本都要打三折。文生图能出海报,但出不了印刷文件;文生视频能出氛围,但出不了成片。所以当"text-to-cad"这…

📰

HarmonyOS 7 textSearchImage:相似度门限样本校准与空结果降级

文搜图接入后,页面能返回图片,并不代表检索体验已经稳定。真正容易被忽略的是那一串 similarity:它看起来像百分制分数,开发时也很容易顺手写成“高于 0.5 就展示”,但官方定义只说明取值范围为 [-1, 1],数…

📰

为AI助手配置外置记忆:claude-mem 实现跨会话上下文保留的完整指南

1. 先说说我为什么给 Claude Code 配了个"记忆外挂"如果你也重度依赖 Claude Code 写代码、改脚本、维护项目,一定有这种感觉:每次开新会话,它都像失忆了一样。你在上个会话里交代过的背景、偏好的命令、项目目录结构、代码规范&am…

📰

claude-mem:为 Claude Code 搭建跨会话长期记忆的 MCP 方案

很多用 Claude Code 的老哥都有同一个体验:上午跟它把项目架构聊得明明白白,连测试怎么写、接口怎么命名都对齐了,下午新开一个终端会话,它又变回一个“失忆的陌生人”。你只能把上午说过的话原封不动再说一遍。claude-mem这个开源…

📰

claude-mem:为Claude装上一个长期记忆,告别对话失忆

1. 先弄清楚 claude-mem 到底是什么1.1 AI 对话的"金鱼记忆"问题用 Claude 的人大概率都经历过这种尴尬:你和一个很有灵气的 AI 聊了半天项目方案,把需求背景、技术选型、团队约束都交代清楚了,对方也给出了相当靠谱的建议。第二天…

📰

FreeCut特效与调色完整指南:50+个WebGPU特效与LUT调色一站式上手

FreeCut特效与调色完整指南:50个WebGPU特效与LUT调色一站式上手 【免费下载链接】freecut FreeCut is a professional-grade video editor that runs entirely in your browser. Professional video editing, zero installation. Create stunning videos with multi…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬