下面对uboot顶层目录下的配置文件config.mk文件进行分析
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源文件截图:
config.mk源文件分析:
63行前面的于arm无关,暂不分析。
63行~70行也和arm没有关系,不分析。浪费感情。
config.mk源文件截图:
config.mk源文件分析:
这些代码是和编译器相关的选项。(废话,别人又不是看不见)
config.mk源文件截图:
config.mk源文件分析:
97行~107行:
这是一个完整的arm编译工具链列表代号,后面的编译就使用这些符号。
config.mk源文件截图:
config.mk源文件分析:
112行:
包含了一个autoconf.mk文件。这个文件也是配置时生成的。它里面是定义的变量,是条件编译的不同的配置值,原来匹配不同的配置项目(或者开发板)。
它的生成是根据目录/include/config/xxx_sd.h(xxx_nand.h)等等文件的配置来生成的。根据这个.h文件里的宏定义生成autoconf.mk文件。这个.h文件对应一个开发板。移植一个uboot到一种开发板,必须配置这.h文件。
autoconf.mk 这个文件非常 重要
config.mk源文件分析:
config.mk源文件分析: