转载地址:https://www.cnblogs.com/awsqsh/articles/4508726.html
新版本:u-boot-2015.04
旧版本:u-boot-2012.04.01
一、编译方法
1.1 其中最不同的就是我们所熟悉的在u-boot-2014.04中的boards.cfg和mkconfig没有了,而同时又在u-boot-2015.01的顶层目录下多出了一个configs目录,还有一个Kconfig文件,可以看到现在的uboot编译方法和linux kernel的编译方法非常的接近。
1.2编译方法区别:
新版的uboot 使用现成的 make xx_defconfig 就会像编译kernel一样在顶层目录生成.config文件。
liam@ubuntu:~/uboot/uboot_2015.04$ make distclean CLEAN scripts/basic CLEAN scripts/kconfig CLEAN include/config include/generated CLEAN .config include/autoconf.mk include/autoconf.mk.dep include/config.h liam@ubuntu:~/uboot/uboot_2015.04$ make smdk2410_defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config #
也可以用make menuconfig手动配置。
新版本中:make xxx_defconfig主要完成了以下工作:
1 编译fixdep;
2 编译conf;
3 执行conf 二进制文件,生成.config
注意:include/config.h文件时在make all的时候生成的。
旧版
liam@ubuntu:~/uboot/uboot_2012.04.01$ make smdk2410_config Configuring for smdk2410 board...
然后再include目录下会得到:
config.mk
ARCH = arm CPU = arm920t BOARD = smdk2410 VENDOR = samsung SOC = s3c24x0
config.h
/* Automatically generated - do not edit */ #define CONFIG_BOARDDIR board/samsung/smdk2410 #include#include #include #include
另外还会在根目录生成:.boards.depend
asm arch proc三个symlink文件,作用不明。
make xxxconfig后均是直接执行make进行编译。
二、交叉编译CROSS_COMPILE定义:
旧版:
./arch/arm/config.mk
./arch/mips/config.mk
CROSS_COMPILE ?= arm-linux-
这样目录的mk文件里面的文件开头处定义的。
新版可以直接在顶层目录:Makefile里面修改
ifeq ($(HOSTARCH),$(ARCH)) CROSS_COMPILE ?= arm-linux- endif CROSS_COMPILE = arm-linux-
注意:这里需要提到if endif外面来。否则读取不到CROSS_COMPILE的。