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

相关推荐
L Jiawen5 小时前
【Golang基础】基础知识(下)
服务器·开发语言·golang
haimin03717 小时前
linux设置CPU固定频率
linux·运维·服务器
大聪明-PLUS7 小时前
Linux:处理器释放内存
linux·嵌入式·arm·smarc
一条咸鱼¥¥¥7 小时前
【运维经验】服务器磁盘做镜像的方法
运维·服务器·windows·经验分享
渣渣盟7 小时前
NFS服务器配置全攻略:从入门到精通
linux·运维·服务器
一只旭宝7 小时前
Linux专题九:I/O复用(水平以及边缘触发放到libevent库那一专题细讲)
linux·运维·服务器
缘如风8 小时前
Linux上sunrpc 111端口关闭
linux·服务器
I · T · LUCKYBOOM8 小时前
iptables防火墙
linux·运维·服务器·网络·安全
山上三树8 小时前
main()函数带参数的用法
linux·c语言
凌波粒8 小时前
Linux-Ubuntu系统环境搭建
linux·运维·ubuntu