ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

03-GNU-Make与Kbuild构建系统

03-GNU-Make与Kbuild构建系统 文章目录一、概述二、形象比喻:建筑工地三、GNU Make 核心机制3.1 规则语法3.2 SDK 顶层 Makefile 核心变量3.3 Make 执行流程四、Kbuild 内核构建系统4.1 核心变量4.2 Kbuild 编译流程4.3 内核顶层 Makefile 关键变量五、SDK 中 Make 与 build.sh 的协作六、实际调试技巧6.1 查看 Make 变量展开6.2 Kbuild 条件编译追踪6.3 SDK 编译日志位置📝 本章小结核心概念对比🏠 课后练习上一章搞清楚了交叉编译工具链–arm-linux-gnueabihf-gcc是怎么回事、为什么要"交叉"编译。工具链有了,接着一个自然的问题:SDK 里几百上千个.c,到底是谁在指挥它们按什么顺序编、哪些编进内核、哪些编成模块、哪些压根不编?答案就是 GNU Make 和 Kbuild。这章解决四个问题:make命令怎么从Makefile里找到规则、怎么决定先编谁后编谁;Kbuild 的obj-y、obj-m变量怎么控制哪些代码参与编译;Makefile和Kconfig到底什么关系,为什么总是成对出现;只改一个.c文件然后增量编译,make 怎么知道只重编这一个、不全部重来。开讲前先在内核目录翻一个Makefile,比如drivers/net/ethernet/stmicro/stmmac/Makefile,看一眼那行obj-$(CONFIG_STMMAC_ETH) += stmmac.o,带着疑问往下听,讲完就懂它什么意思。一、概述整个 SDK 的编译由两套构建系统协作完成:GNU Make 负责顶层调度,Kbuild 负责内核和 U-Boot 内部的模块化编译。Make 是通用的,任何 C/C++ 项目都能用;Kbuild 是 Linux 内核专用的,可以理解为 Make 的"上层扩展"。SDK 里 M
返回列表