编译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)

相关推荐
游戏开发爱好者82 分钟前
在 Linux 环境通过命令行上传 IPA 到 App Store,iOS自动化构建与发布
android·linux·ios·小程序·uni-app·自动化·iphone
周公挚友2 分钟前
centos 7.9 nvm 安装nodejs
linux·运维·centos
济6173 分钟前
linux 系统移植(第十二期)---Linux 内核移植(1)--- Ubuntu20.04
linux
EverydayJoy^v^4 分钟前
RH134学习进程——六.管理SELinux安全
linux·学习·安全·selinux
小手智联老徐5 分钟前
漫谈 Linux 声卡驱动开发的设备树与 I2S
linux·运维·驱动开发
云栈开源日记6 分钟前
Linux Kernel:云原生时代的操作系统内核
linux·运维·云原生
网硕互联的小客服6 分钟前
Debian系统提示“Media change...”如何处理?
运维·debian
linweidong7 分钟前
K8s节点保卫战:基于Node Local DNS架构的磁盘自愈系统设计
运维·docker·云原生·容器·架构·kubernetes·k8s
小手智联老徐7 分钟前
Jetson Orin Nano 音频设置与开发之 DTS
linux·驱动开发·音视频
HalvmånEver10 分钟前
Linux:信号捕捉上(信号三)
linux·运维·服务器