u-boot编译框架
2021-11-12 13:21:31 0 举报
s
作者其他创作
大纲/内容
u-boot-dirs
built-in.o的编译过程:conf工具从根目录下开始树状读取默认的Kconfig文件,分析其配置并保存在内存中。再读取指定文件(即arch/../configs/pangu_basic_defconfig)更新得到最终的符号表,并输出到.config文件中。
prepare0
scripts/kconfig/Makefile
make xxx_defconfig
$(KCONFIG_CONFIG)实际上就是.config文件; include/config/auto.conf.cmd是由fixdep在编译时生成的依赖文件。
prepare3规则就是用来检查: 当编译指定了KBUILD_SRC时,源码目录下有没有执行过make,若执行过,要先执行make mrporper。
调用ld命令,将$(u-boot-init)和$(u-boot-main)指定的一系列文件通过链接脚本u-boot.lds链接起来。
注1: conf会从根目录开始读取Kconfig,同时检查并更新配置阶段生成的.config文件注2: include/config/auto.conf 等效于autoconfig.h
注1:tools/scripts/define2mk.sed #define 格式转化为CONFIG_CMD_EXT4=y注2:scripts/Makefile.autoconf 可以被删除 When we move all CONFIGs from header files to Kconfig
输出二
编译相关的flag以及命令:obj-m :lib-y 变量去除obj-m( $(Kbuild-file)中的obj-m )
$(srctree)/Makefile FORCE
输出一
create_symlink
CONFIG_OF_SEPARATE
include/config/auto.conf
$(ALL-y)
Makefile.autoconf 文件
$(u-boot-init)
cfg
include/config/%.conf:
include/generated/autoconf.h
u-boot-dtb.bin
u-boot
include/config/tristate.conf
u-boot.srec
asm/config.h
%_defconfig
u-boot.bin
include/config/uboot.release
scripts/kconfig/conf --defconfig=arch/../configs/xx_defconfig Kconfig
binary_size_check
linux/kconfig.h
config_fallbacks.h
prepare
u-boot.sym
$(u-boot-main)
outputmakefile
include/config.h
config_defaults.h
src=objkbuild-dir = src kbuild-file := $(kbuild-dir)/Kbuild 或者 $(kbuild-dir)/Makefile)
u-boot.lds
etc
Makefile.build是一个通用性的框架,${Kbuild-file} 中obj-xxx相关的定义,是实际的编译目标故后续还需要对它们做一定的处理
platform-auto.h:arch/arm/mach-zynq/u-boot.lds
.config的生成流程:conf工具从根目录下开始树状读取默认的Kconfig文件,分析其配置并保存在内存中。再读取指定文件(即arch/../configs/pangu_basic_defconfig)更新得到最终的符号表,并输出到.config文件中。
更新 include/config/auto.conf
all
scripts/Makefile.lib
include/autoconf.mk.dep
make -f scripts/Makefile.build obj=scripts/kconfig xxxx_deconfig
=>make -f scripts/Makefile.build obj=scripts/basic 生成fixdep
%config
CONFIG_SYS_LDSCRIPT
rm -f include/config/auto.conftouch include/config/auto.conf
__all
$(KCONFIG_CONFIG)
include/autoconf.mk
Makefile文件
scripts_basic=>make -f scripts/Makefile.build obj=scripts/basic
include/config/auto.conf.cmd
u-boot-init := $(head-y)=》head-y := arch/arm/cpu/$(CPU)/start.o ( file:arch/arm/Makefile)
prepare1
检查:LDSCRIPT是否定义:否->返回错误
$(timestamp_h)
u-boot.cfg
prepare2
config/platform-top.h
注1: 编译生成scripts/basic/fixdep工具。 该工具是u-boot编译系统中最常用的工具, 用于在编译过程中修正每一个生成文件的依赖关系
通用变量与定义:变量: build := -f $(srctree)/scripts/Makefile.build obj函数定义:filechk
${Kbuild-file}
scripts/Makefile.autoconf
include/generated/version_autogenerated.h依赖用于填充宏---UBOOTRELEASE
archprepare
include/config/auot.conf.cmd
LDSCRIPT
dts/dt.dtb
prepare3
u-boot-nodtb.bin
Script/Kbuild.include
System.map
make -f ./scripts/Makefile.build obj=.不会生成任何目标。
输出三
依赖用于获取CONFIG_LOCALVERSION CONFIG_LOCALVERSION_AUTO
config_uncmd_spl.h
include/generated/timestamp_autogenerated.h
$(version_h)
common.h
scripts_basic
1.make xxx_deconfig 生成.config2.make 默认为:make all
Script/Makefile.build
收藏
0 条评论
下一页