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

相关推荐
danplus9 分钟前
node发送邮件:如何实现Node.js发信功能?
服务器·node.js·外贸开发信·邮件群发·蜂邮edm邮件营销·邮件接口·营销邮件
神即道 道法自然 如来11 分钟前
Jenkins怎么设置每日自动执行构建任务?
运维·jenkins
小黑爱编程18 分钟前
【LInux】HTTPS是如何实现安全传输的
linux·安全·https
BeyondESH23 分钟前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++
wn53124 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
hanniuniu1325 分钟前
详细解读,F5服务器负载均衡的技术优势
运维·服务器·负载均衡
鱼饼6号39 分钟前
Prometheus 上手指南
linux·运维·centos·prometheus
Asher Gu44 分钟前
Linux系统编程入门 | 模拟实现 ls -l 命令
linux
PatrickYao04221 小时前
记一次安装discuz时遇到的错误
服务器
c无序1 小时前
【Linux进程控制】进程程序替换
linux