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

相关推荐
使者大牙10 分钟前
【单点知识】CANopen实用协议介绍
服务器·网络·tcp/ip
狂野小青年14 分钟前
Jenkins如何添加全局凭证
运维·jenkins
m0_6948455717 分钟前
music-website 是什么?前后端分离音乐网站部署实战
linux·运维·服务器·云计算·github
you-_ling29 分钟前
Linux软件编程:Shell命令
java·linux·服务器
FairGuard手游加固30 分钟前
面具外挂检测方案
linux·运维·服务器
鲨辣椒1008630 分钟前
Linux软件编程基石——基础指令使用
linux·windows·microsoft
熬夜有啥好31 分钟前
Linux软件编程——Shell命令
linux·运维·服务器
一只自律的鸡32 分钟前
【Linux驱动】环境搭建和开发板操作 下篇
linux·运维·服务器
模型时代37 分钟前
Linux系统安全革命:Amutable公司推出全新验证完整性技术
linux·运维·系统安全
醇氧40 分钟前
【Linux】centos 防火墙学习
linux·学习·centos