一、配置介绍
1.1 常用命令当前 uboot 的配置已经完全变成Linux 内核的配置形式了,完全可以按照Linux 内核的分析方是区分析 uboot。 uboot 和?Linux的代码配置项由 Kconfig 来完成的,关于 Kconfig 语法,可参见:linux/Documentation/kbuild/kconfig-language.txt 在编译时,先进行配置,目的是根据需求选择功能以及编译生成方式类型(模式或包含在内核中). 配置项操作可以由如下命令中的其中一条来完成: ? make config,make menuconfig,make oldconfig,make xx_defconfig
若已存在 .config 文件,make menuconfig 及 make oldconfig 都会把原 .config 另存为 .config.old。
在执行完其中一条 config 命令后,会生成 .config 及 autoconf 文件,autoconf 是根据配置项生成的相应宏定义,供 makefile 使用,当执行 make 命令时,就会根据 autoconf 定义的宏及 makefile 去编译源码。 u-boot的编译跟kernel编译一样,分两步执行:? 1.2 Linux 内核构建系统所支持的目标make targets,targets 就是我们前述的那些命令,我们可以通过 make help 打印出来内核构建系统所支持的目标完整列表。 如下所示,是 make help 所打印的所有目标:
文件目标 就是 uboot 中所有格式的文件,之后就是构建时候 可以传入的参数。 最后还由一段话,就是 执行 make ?或 ?make all ?的时候,构建所有以 * 开头的目标,这里只有 ?* u-boot ,即使执行此项。 构建系同与 .config 相关的目标,就是上面用配置目标 ? 1.3 构建系统的文件1.3.1 文件介绍在 ./Document/kbuild/makefiles.txt 中有详细介绍
顶层 Makefiles 读取从uboot 配置程序中生成的 .config 文件 1.3.2 文件关联在上述的所有文件中,除了顶层的 ?Makefile,其他文件都或直接、或间接的和 它相关联。这些关联可以分为两类: (1)直接包含在一个文件中,用 ?include 来包含另外的文件 (2)间接包含使用 make -f 来调用,-f 是使用不同的 ?makefile 文件来进行 make 的选项。 1.4 make xxx_defconfig 命令执行分析由于 2018.03 的 uboot 版本中已经遗弃了 2440 所以我们选择一块其他开发板进行分析。 执行命令:make smdkc100_defconfig V=1 V = 1 的意思是打开编译过程 过程如下: 1 make -f ./scripts/Makefile.build obj=scripts/basic 2 cc -Wp,-MD,scripts/basic/.fixdep.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o scripts/basic/fixdep scripts/basic/fixdep.c 3 rm -f .tmp_quiet_recordmcount 4 make -f ./scripts/Makefile.build obj=scripts/kconfig smdkc100_defconfig 5 cc -Wp,scripts/kconfig/.conf.o.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -D_GNU_SOURCE -DCURSES_LOC="<ncurses.h>" -DLOCALE -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c 6 cat scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c 7 cat scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c 8 cat scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c 9 cc -Wp,scripts/kconfig/.zconf.tab.o.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -D_GNU_SOURCE -DCURSES_LOC="<ncurses.h>" -DLOCALE -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c 10 cc -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o 11 scripts/kconfig/conf --defconfig=arch/../configs/smdkc100_defconfig Kconfig 12 # 13 # configuration written to .config 14 #
这一项是生成了 scripts/basic/fixdep 工具
这一项是生成了 scripts/kconfig/conf 工具
最后执行 scripts/kconfig/conf 工具 生成.config ? 可以知道 make xxx_defconfig 的执行主要分成三个部分:
摘自https://www.cnblogs.com/kele-dad/p/8970103.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |