新手从零编译uboot源码(一),搭建编译环境,并进行简单编译测试
1、下载 u-boot-2018-11 源码,并解压.2、因为我要编译 S5PV210芯片, CROTEX-A8架构,centos环境(linux)因此选择下面工具链(下载):gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz解压指令,分两步执行:xz -d gcc-arm-8.2-2019.01-x86_64-arm-linux-gn...
1、下载 u-boot-2018-11 源码,并解压.
2、因为我要编译 S5PV210芯片, CROTEX-A8架构
centos系统,Linux环境,因此选择下面工具链(下载):
gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz
解压指令,分两步执行:
xz -d gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar.xz
tar -xvf gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi.tar
3、给 工具链 添加 到 Linux 的环境变量中
①先用指令 pwd 拿到 工具链 的解压路径 下的 bin 的路径,我得到的路径:
/home/suozhang/linux/gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi/bin
②用 指令 vi ~/.bashrc , 用到了 ~ 即通配符,表示当前用户$HOME 目录下的 bashrc 文件,即环境变量文件
export PATH=$PATH:/home/suozhang/linux/gcc-arm-8.2-2019.01-x86_64-arm-linux-gnueabi/bin
ESC 退出编辑模式, :wq 保存退出即可。
③用指令 source ~/.bashrc 立即生效 这个环境变量文件
④退出当前 bin 目录, 使用 指令 arm-linux-gnueabi-gcc -v 进行查看版本号 测试 是否可用
4、进入到 uboot 根目录下, 修改Makefile,添加编译目标的架构以及工具链名称
(如果第三步 没有添加 编译工具链的 路径到环境变量中,那么在这里 添加路径 也是可以的)
vi Makefile
添加编译目标架构 & 添加工具链名称
ARCH = arm
CROSS_COMPILE = arm-linux-gnueabi-
5、使用 指令 :make s5p_goni_defconfig ,发现 以下错误:
make s5p_goni_defconfig
1、/bin/sh: bison: command not found
解决方法:
yum install bison 或者 sudo apt-get install bison
2、/bin/sh: flex: command not found
解决方法:
yum install flex / sudo apt-get install flex
3、make s5p_goni_defconfig,再次编译,成功
[root@VM_0_3_centos u-boot-2018.11]# make s5p_goni_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
YACC scripts/kconfig/zconf.tab.c
LEX scripts/kconfig/zconf.lex.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
总结:
1、u-boot-2018.11/configs/s5p_goni_defconfig 是开发板 goni 的默认配置文件
2、开发板 goni 相关文件,路径(u-boot-2018.11/board/samsung/goni)
3、 make s5p_goni_defconfig,这一步操作是根据 u-boot-2018.11/configs/s5p_goni_defconfig 文件 和
u-boot-2018.11/Kconfig 文件比对,产生文件.config
4、.config是uboot的编译配置文件,里面有uboot运行的芯片架构,开发板名称,芯片名称,各种功能裁剪等等
5、2019年2月21日19:05:12
6、调用指令 make 进行编译
[root@VM_0_3_centos u-boot-2018.11]# make
scripts/kconfig/conf --syncconfig Kconfig
CHK include/config.h
UPD include/config.h
CFG u-boot.cfg
# 中间忽略N行
OBJCOPY u-boot.srec
OBJCOPY u-boot-nodtb.bin
DTC arch/arm/dts/s5pc1xx-goni.dtb
make[2]: `arch/arm/dts/s5pc1xx-goni.dtb' is up to date.
SHIPPED dts/dt.dtb
FDTGREP dts/dt-spl.dtb
CAT u-boot-dtb.bin
COPY u-boot.bin
SYM u-boot.sym
COPY u-boot.dtb
CHK include/config.h
CFG u-boot.cfg
CFGCHK u-boot.cfg
[root@VM_0_3_centos u-boot-2018.11]#
参考:https://blog.csdn.net/qq_16777851/article/details/81543373
更多推荐
所有评论(0)