其他
Linux内核Makefile执行流程
本文为看雪论坛优秀文章
看雪论坛作者ID:jmpcall
一
必备知识
1.1. Makefile基础语法
编译规则中的指令部分
${shell XX},var != XX中的XX部分
$(if …, XX, XX)中的XX部分
=(延迟赋值)、:=(立即赋值)、!=(值为shell命令)、?=(条件赋值)、+=(追加)
-f/-C:嵌套执行指定(目录中的)Makefile
执行一个Makefile,并不是从第一行开始执行,而是从指定或默认的编译目标开始执行(位置目标编译规则之前的赋值语句,只在相应变量需要被使用时才会执行),其中,Makefile(包括include内容)中的第一个目标,为默认目标,如果make命令行中没有指定编译目标,则执行默认目标。
$(wildcard pattern)
$(patsubst pattern, replacement, text)
$(strip string)
$(filter pattern, text)
$(filter-out pattern, text)
$(call func, args..)
…
$@:编译目标
$<:依赖列表中的第一个依赖对象
$^:依赖列表中的所有对象
$?:依赖文件列表中所有有更新的文件
深入解析Makefile系列:https://zhuanlan.zhihu.com/p/362640343(简约,直指核心)
跟我一起写makefile(陈皓):https://blog.csdn.net/whitefish520/article/details/103968609(精典,超级详细)
1.2. Kbuild内置函数
1.2.1. $(build)
1.2.2. $(if_changed)
以下是$(if_changed)的使用形式,及其参数的含义:
二
编译外部模块
2.1. 涉及Makefile内容
2.2. 概要流程
2.3. 详细流程
三
make menuconfig
3.1. 涉及Makefile内容
3.2. 概要流程
3.3. 详细流程
四
Make [all/_all/modules]
4.1. 涉及Makefile内容
4.2. 概要流程
4.3. 详细流程
五
参考
看雪ID:jmpcall
https://bbs.kanxue.com/user-home-815036.htm
# 往期推荐
3、安卓加固脱壳分享
球分享
球点赞
球在看