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

相关推荐
威桑4 分钟前
解决 Qt6 程序 在Linux 环境下无法输入中文的问题
linux·c++·qt
j_xxx404_34 分钟前
Linux:文件描述符fd
linux·运维·服务器
未既34 分钟前
逻辑卷挂载磁盘操作命令
linux·运维·服务器
那就回到过去1 小时前
拥塞管理和拥塞避免
运维·服务器·网络·网络协议·tcp/ip·ensp
李斯维1 小时前
安装 Arch Linux 到 VMware Workstation 的完全指南
linux
未来之窗软件服务1 小时前
服务器运维(三十六)日志分析nginx日志工具—东方仙盟
运维·服务器·服务器运维·仙盟创梦ide·东方仙盟
香蕉你个不拿拿^2 小时前
Linux粘滞位和文件,目录权限
linux·运维·服务器
木子欢儿2 小时前
Debian挂载飞牛OS创建的RAID分区和Btrfs分区指南
运维·debian
2401_858286112 小时前
OS52.【Linux】System V 共享内存(1)
linux·运维·服务器·共享内存
智能零售小白白3 小时前
零售会员营销自动化:标签体系与精准触达的技术实现
运维·自动化·零售