下面对uboot顶层目录下的配置文件config.mk文件进行分析

config.mk源文件截图:
Uboot顶层 config.mk 分析
config.mk源文件分析:

26行:
判断编译输出目录(OBJTREE)和源码目录(SRCTREE)两个目录是否不相同,不相同则处理下面的命令。

27~30行:
如果当前目录变量和源码目录变量相同,则dir赋值为空,否则,把CURDIR目录中的SRCTREE目录替换成空,即dir为$(CURDIR)去掉$(SRCTREE)的部分。

Makefile中的字符串替换函数 subst 格式:

$(subst < from >;,< to >;,< text >;)

功能:把字串< text >;中的< from >;字符串替换成< to >;。

返回:函数返回被替换过后的字符串。

33行:
如果dir不为空(当前目录不是顶层目录),那么obj等于$(OBJTREE) $(dir)/,否则(当前目录是顶层目录)等于$(OBJTREE)/

34行:
如果dir不为空(当前目录不是顶层目录),那么obj等于$(SRCTREE)/$(dir)/,否则(当前目录是顶层目录)等于$(SRCTREE)/

36行:
创建obj目录。

上面的代码,主要是针对用户自定义输出编译文件的目录设置的。


config.mk源文件截图:
Uboot顶层 config.mk 分析

config.mk源文件分析:

63行前面的于arm无关,暂不分析。

63行~70行也和arm没有关系,不分析。浪费感情。

config.mk源文件截图:
Uboot顶层 config.mk 分析
config.mk源文件分析:

这些代码是和编译器相关的选项。(废话,别人又不是看不见)

config.mk源文件截图:
Uboot顶层 config.mk 分析
config.mk源文件分析:

97行~107行:

这是一个完整的arm编译工具链列表代号,后面的编译就使用这些符号。

config.mk源文件截图:
Uboot顶层 config.mk 分析
config.mk源文件分析:

112行:
包含了一个autoconf.mk文件。这个文件也是配置时生成的。它里面是定义的变量,是条件编译的不同的配置值,原来匹配不同的配置项目(或者开发板)。

它的生成是根据目录/include/config/xxx_sd.h(xxx_nand.h)等等文件的配置来生成的。根据这个.h文件里的宏定义生成autoconf.mk文件。这个.h文件对应一个开发板。移植一个uboot到一种开发板,必须配置这.h文件。
  
autoconf.mk 这个文件非常 重要

Uboot顶层 config.mk 分析
config.mk源文件分析:
Uboot顶层 config.mk 分析
config.mk源文件分析:

相关文章: