文章目录
- 1. fixdep 工具
- 2. conf 工具
1. fixdep 工具
fixdep <depfile> <target> <cmdline>
作用:查找实现目标所用的命令、源码、头文件等全部信息。
参数1:<depfile>编译产生的依赖文件*.d
参数2:<target>编译生成的目标
参数3:<cmdline>编译使用的命令
返回:实现目标所用的命令、源码、头文件等全部信息
编译时,编译器会根据选项-MD
自动生成依赖文件.*.d
,用fixdep
更新.*.d
文件生成新的依赖文件.*.cmd
。
fixdep被两个地方调用:
- rule_cc_o_c:编译u-boot自身的%.c文件时,rule_cc_o_c调用fixdep去更新生成的%.c的依赖文件.%.cmd。
- if_changed_dep:适用于除了上述的rule_cc_o_c外的其他目标依赖文件的生成,例如生成主机上执行的程序、处理dts文件、处理汇编文件生成*.o(或生成*.s、*.lst)等。
2. conf 工具
conf <input_mode> <name>
作用1:将配置文件和Kconfig文件中的相应信息写入到.config
中。
作用2:检查并更新.config
文件。
参数1:<input_mode>输入模式
参数2:<name>文件名
conf
由conf.o
和zconf.tab.o
链接而来,其中conf.c
生成conf.o
,是整个应用的主程序;zconf.tab.c
生成zconf.tab.o
,完成具体的词法和语法分析任务。
zconf.tab.c :用于读取并分析整个Kconfig
系统的文件,较为复杂,也比较枯燥。
conf.c :是conf
主程序的文件,通过分析main
函数可以大致了解操作流程:解析参数,不同的参数有不同的流程:
流程1: 参数1:–defconfig=arch/…/configs/rpi_3_32b_defconfig 、 参数2:Kconfig
- 从
$(srctree)
目录下依次查找名为Kconfig
的文件,然后将取得的信息存放到链表中- 读取指定的配置文件
arch/../configs/rpi_3_32b_defconfig
- 将读取到的所有配置写入
.config
文件中流程2: 参数1:syncconfig、 参数2:Kconfig
- 检查顶层目录下的
.config
文件是否存在- 读取生成的
.config
- 检查
.config
是否被改动过,并检查各项设置的有效性- 更新以下文件:
include/generated/autoconf.h
include/config/auto.conf.cmd
include/config/tristate.conf
include/config/auto.conf