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

相关推荐
蓝天居士1 小时前
Linux串口接收0x0D莫名转换为0x0A问题的根本原因分析
linux
终生成长者1 小时前
Kubernetes常用操作与概念总结--从服务器导出mongo数据,并下载到本地
服务器·容器·kubernetes
UP_Continue1 小时前
Linux--动静态库
linux·运维·服务器
CheungChunChiu1 小时前
Linux 音频系统全景解析:PipeWire、PulseAudio 与 ALSA 的层次关系
linux·运维·服务器·audio
小张成长计划..2 小时前
【linux】5:编译器-gcc/g++的使用
linux
你真是饿了2 小时前
7.进程间通信
linux·运维·服务器
TEC_INO2 小时前
Linux_12:通过多线程获取VENC的H264码流数据
linux·运维·服务器
跨境小技2 小时前
如何从eBay抓取商品价格数据?2026 eBay数据采集实用方案
大数据·运维
无证驾驶梁嗖嗖3 小时前
git_lab_事故恢复全过程(ubuntu_22
linux·git·ubuntu
何中应3 小时前
CentOS7安装Git
运维·git·centos·开发工具