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

相关推荐
w***4246 小时前
SQL-Server链接服务器访问Oracle数据
服务器·sql·oracle
孟先生丨6 小时前
PVE 系统 2.5G网卡驱动从 r8169 切换到 r8125
服务器·5g
折翅嘀皇虫6 小时前
fastdds.type_propagation 详解
java·服务器·前端
码龄3年 审核中6 小时前
Linux record 03
java·linux·运维
星驰云6 小时前
记一次CentOS 硬盘损坏无法启动修复教程
linux·运维·centos
人工智能训练6 小时前
windows系统中的docker,xinference直接运行在容器目录和持载在宿主机目录中的区别
linux·服务器·人工智能·windows·ubuntu·docker·容器
阿拉斯攀登7 小时前
docker介绍
服务器·docker
q***47437 小时前
Windows 和 Linux 系统下,如何查看 Redis 的版本号?
linux·windows·redis
代码对我眨眼睛7 小时前
Ubuntu 系统 NVIDIA 显卡驱动自动化安装全流程
linux·ubuntu·自动化
xiong2learning7 小时前
Linux虚拟机无法使用u盘的一种可能-- 重新下载open-vm-tools + open-vm-tools-desktop解决
linux