编译linux的设备树

使用make dtbs命令时

在arch/arm 的目录Makefile文件中有

boot := arch/arm/boot

prepare 和scripts是空的

在文件scripts/Kbuild.include中

变量build := -f $(srctree)/scripts/Makefile.build obj

在顶层Makefile中

$(srctree):=.

展开后-f ./scripts/Makefile.build obj:=arch/arm/boot/dts

通过下面的命令包含传入的$(obj)目录下的Makefile,即arch/arm/boot/dts/Makefile

The filename Kbuild has precedence over Makefile

kbuild-dir := (if (filter /%,(src)),(src),(srctree)/(src))

kbuild-file := (if (wildcard (kbuild-dir)/Kbuild),(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)

include $(kbuild-file)

-f 的作用是使用make 命令编译由-f 指定的Makefile文件(scripts/Makefile.build)

在该文件中使用默认目标__build,

展开后使用

__build: (builtin-target) (lib-target) (extra-y)) (subdir-ym) $(always)

@:

其中 $(always)在arch/arm/boot/dts/Makefile中

always := $(dtb-y)

$(dtb-y)就是我们要编译的目标.dtb。

至此,流程为

Make dtbs ->

make -f ./scripts/Makefile.build obj:=arch/arm/boot/dts

->__build: (builtin-target) (lib-target) (extra-y)) (subdir-ym) $(always)

->include $(kbuild-file)

->always := $(dtb-y)

dtbs 依赖$(dtb-y)

相关推荐
2601_951645789 小时前
Linux 编程语言全解析:C、C++、Python、Go、Rust 谁更强?
linux·python·go·c·编程语言
阿坤带你走近大数据9 小时前
Linux中管道符的作用
java·linux·服务器
Fcy6489 小时前
Linux下 进程信号初识和信号的产生
linux·运维·信号的产生
爱装代码的小瓶子9 小时前
安工大Linux考点分类真题解析(含知识点是试卷原题了)
linux·服务器·网络·c
hweiyu0010 小时前
Linux命令:sudoedit
linux·运维·服务器
qq_1631357510 小时前
Linux 【03-nl命令超详细教程】
linux
lpl31290550910 小时前
skynet 共享数据原理
服务器·c语言·lua
ShGamu10 小时前
自动化输送设备公司选型参考与核心维度梳理
运维·自动化·自动化输送设备
qq_1631357510 小时前
Linux文件基本属性【权限】
linux
SEO_juper10 小时前
跳出率偏高诊断:页面加载慢、内容不对买家需求调整思路
服务器·chrome·seo·跨境电商·外贸·geo·2026