u-boot版本: v2015.04
branch: imx_v2015.04_3.14.52_1.1.0_ga
Makefile:
scripts/kconfig/Makefile:
$<为$(obj)/conf,是个可执行程序,$(SRCARCH)是.., $@是mx6qecovacsandroid_defconfig
$(Kconfig)为根目录Kconfig。
所以 $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
就是
$(obj)/conf --defconfig=configs/mx6qecovacsandroid_defconfig Kconfig
这个过程主要是把mx6qecovacsandroid_defconfig和Kconfig的定义导出到.config文件中,
下一步make会用到它,其中Kconfig会递归包含相应目录下的Kconfig,如下列出是我们关注的部分:
这几个参数和u-boot_v2009.08中的就如出一辙了,所以其实只是编译的方法不一样而已。
新版为了兼容性能更好,使用了和kernel一样的编译方法。先利用conf解析Kconfig生成.config,
之后编译系统会想将以.config生成include/config/auto.conf,然后Makefile和sripts/Makefile.build
会包含进来,这样子目录的Makefile就可以通过这些变量来确定哪些文件要被编译进来了。
接下来调用
#make
默认目标是_all:
all的定义:
#grep 'ALL-y' . -rns
auto.conf会在编译之前会被间接调用到:
Makefile:
Makefile:
scripts/kconfig/Makefile:
$< --$@ $(Kconfig)也就是
$(obj)/conf --silentoldconfig Kconfig
使用conf生成auto.conf,autoconf.h这两个重要文件。
后面就是根据auto.conf和autoconf.h的定义生成u-boot.bin, u-boot.imx等这些文件
拿u-boot.imx举例:
branch: imx_v2015.04_3.14.52_1.1.0_ga
Makefile:
scripts/kconfig/Makefile:
$<为$(obj)/conf,是个可执行程序,$(SRCARCH)是.., $@是mx6qecovacsandroid_defconfig
$(Kconfig)为根目录Kconfig。
所以 $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
就是
$(obj)/conf --defconfig=configs/mx6qecovacsandroid_defconfig Kconfig
这个过程主要是把mx6qecovacsandroid_defconfig和Kconfig的定义导出到.config文件中,
下一步make会用到它,其中Kconfig会递归包含相应目录下的Kconfig,如下列出是我们关注的部分:
这几个参数和u-boot_v2009.08中的就如出一辙了,所以其实只是编译的方法不一样而已。
新版为了兼容性能更好,使用了和kernel一样的编译方法。先利用conf解析Kconfig生成.config,
之后编译系统会想将以.config生成include/config/auto.conf,然后Makefile和sripts/Makefile.build
会包含进来,这样子目录的Makefile就可以通过这些变量来确定哪些文件要被编译进来了。
接下来调用
#make
默认目标是_all:
all的定义:
#grep 'ALL-y' . -rns
auto.conf会在编译之前会被间接调用到:
Makefile:
Makefile:
scripts/kconfig/Makefile:
$< --$@ $(Kconfig)也就是
$(obj)/conf --silentoldconfig Kconfig
使用conf生成auto.conf,autoconf.h这两个重要文件。
后面就是根据auto.conf和autoconf.h的定义生成u-boot.bin, u-boot.imx等这些文件
拿u-boot.imx举例: