设为首页 加入收藏

TOP

UBOOT编译--- UBOOT编译过程目标依赖分析(八)(六)
2023-07-23 13:30:28 】 浏览:184
Tags:UBOOT 编译 --- 程目标 赖分析
OARDDIR)和$ (CPUDIR)目录下定制的针对board或cpu的lds文件;如果没有定制的lds文件,则采用arch/$(ARCH)/cpu目录下默认的lds文件。

7. prepare系列目标依赖

prepare是一系列prepare伪目标和动作的组合,完成编译前的准备工作,它的相关的定义如下

# Things we need to do before we recursively start building the kernel
# or the modules are listed in "prepare".
# A multi level approach is used. prepareN is processed before prepareN-1.
# archprepare is used in arch Makefiles and when processed asm symlink,
# version.h and scripts_basic is processed / created.

# Listed in dependency order
PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3

# prepare3 is used to check if we are building in a separate output directory,
# and if so do:
# 1) Check that make has not been executed in the kernel src $(srctree)
prepare3: include/config/uboot.release
ifneq ($(KBUILD_SRC),)
	@$(kecho) '  Using $(srctree) as source for U-Boot'
	$(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
		echo >&2 "  $(srctree) is not clean, please run 'make mrproper'"; \
		echo >&2 "  in the '$(srctree)' directory.";\
		/bin/false; \
	fi;
endif

# prepare2 creates a makefile if using a separate output directory
prepare2: prepare3 outputmakefile

prepare1: prepare2 $(version_h) $(timestamp_h) \
                   include/config/auto.conf
ifeq ($(wildcard $(LDSCRIPT)),)
	@echo >&2 "  Could not find linker script."
	@/bin/false
endif

archprepare: prepare1 scripts_basic

prepare0: archprepare FORCE
	$(Q)$(MAKE) $(build)=.

# All the preparing..
prepare: prepare0

伪目标prepare依赖prepare0,prepare0又依赖 archprepare、FORCE,archprepare又依赖prepare1和scripts_basic(UBOOT编译--- make xxx_deconfig过程详解(一) 4.1小节 - 依赖 scripts_basic):
1. 在prepare1的依赖列表中,除了include/config/auto.conf之外,还有$ (version_h)和$(timestamp_h),它们的依赖关系如下:

version_h := include/generated/version_autogenerated.h
timestamp_h := include/generated/timestamp_autogenerated.h
$(version_h): include/config/uboot.release FORCE
	$(call filechk,version.h)

$(timestamp_h): $(srctree)/Makefile FORCE
	$(call filechk,timestamp.h)

(1)其中include/config/auto.conf具体分析参见:UBOOT编译--- include/config/auto.conf、 include/config/auto.conf.cmd、 include/generated/autoconf.h (二)
(2)其中version_h和timestamp_h具体分析参见:UBOOT编译--- UBOOT的$(version_h) $(timestamp_h)(七)

2. 在prepare2的依赖列表中有prepare3 和 outputmakefile;
(1)其中outputmakefile具体分析参见:UBOOT编译--- make xxx_deconfig过程详解(一) 4.2小节 - 依赖 outputmakefile

3. prepare3的依赖include/config/uboot.release

# Store (new) UBOOTRELEASE string in include/config/uboot.release
include/config/uboot.release: include/config/auto.conf FORCE
	$(call filechk,uboot.release)

(1)其中include/config/uboot.release具体分析参见:UBOOT编译--- UBOOT的$(version_h) $(timestamp_h)(七) - 3.1.1 依赖include/config/uboot.release

8. _all目标依赖关系简图

                                                                                              --------------------------------------------|
                                                                                             | arch/arm/cpu  \             $(u-boot-dirs)|
                                                         arch/arm/cpu/built-in.o \           | arch/arm/cpu/armv8 \            的值      |
                                                         arch/arm/cpu/armv8/built-in.o \     | arch/arm/lib \                            |
                                                         arch/arm/lib/built-in.o \           | arch/arm/mach-imx \                       |
                                                         arch/arm/mach-imx/built-in.o \      | board/myzr/common  \                      |
                                                         board/myzr/common/built-in.o  \     | board/myzr/myimx8mm  \                    |
                                                         board/myzr/myimx8mm/built-in.o  \   | cmd  \                                    |
                                                         cmd/built-in.o  \                   | common  \                                 |
                                                         common/built-in.o  \                | disk  \                                   |
                                                         disk/built-in.o  \                  | drivers \                                 |
                                                         drivers/built-in.o  \               | drivers/dma  \                            |
                                                         drivers/dma/built
首页 上一页 3 4 5 6 7 下一页 尾页 6/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇UBOOT编译--- UBOOT的编译和链接.. 下一篇Cache的相关知识(二)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目