Qemu开发ARM篇-2、uboot交叉编译


在继上一篇 Qemu开发ARM篇-1、环境搭建篇中,我们搭建安装了qemu虚拟机,在本节中,我们将演示如何安装交叉编译工具并交叉编译 uboot,在下一节中,我们将演示如何使用 qemu运行交叉编译的 uboot二进制程序。

1、交叉编译工具安装

在该示例中,我们使用交叉编译工具为gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.,官网下载地址链接
1、使用如下命令下载交叉编译工具

wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabi/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz

在这里插入图片描述

下载过程网络不是很好,可以手动点击链接使用网页下载,下载完之后拷贝到ubuntu主机即可。下载完成时候,使用如下命令解压交叉编译工具链。

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz

在这里插入图片描述

我们先将其解压,在这里我们先不将其直接添加到系统PATH路径中,因为这样如果系统还有其他交叉编译工具时,可能会使用有冲突,因此在后面我们要使用的时候在使能该交叉编译工具。

2、uboot交叉编译

1、工作目录创建
使用如下命令创建工作目录:

mkdir project/qemu/src -p
mkdir project/qemu/out -p
mkdir project/qemu/script -p

创建好工程目录如下,后续我们的所有开发都在:~/project/qemu中进行开发,out存放所有输出文件,script存放一些编译运行脚本,src用来存放源码文件。
在这里插入图片描述

2、uboot源码获取
在src目录下新建uboot目录,并使用下列命令获取uboot源码并解压,本次示例中使用uboot版本为2022.07-rc3

cd src
mkdir uboot
cd uboot
wget https://ftp.denx.de/pub/u-boot/u-boot-2022.07-rc3.tar.bz2
tar -xvf u-boot-2022.07-rc3.tar.bz2

在这里插入图片描述

3、uboot交叉编译
然后使用如下进入~/project/qemu/script目录下,使用touch build_uboot.sh创建编译脚本,并使用chmod 777 build.sh修改脚本可执行权限,然后在build_uboot.sh脚本中输入如下编译命令:

#!/bin/bash
# 后面路径是我们前面安装交叉编译工具的路径,根据自己安装路径修改即可
export PATH=$PATH:~/software/qemu/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/
# 进入uboot源码目录,如果目录不是和笔者一样,请自行修改
cd ~/project/qemu/src/uboot/u-boot-2022.07-rc3/
# 配置vexpress开发板,输出文件放到~/project/qemu/out/u-boot-arm
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_ca9x4_defconfig O=~/project/qemu/out/u-boot-arm
# 配置vexpress开发板,输出文件放到~/project/qemu/out/u-boot-arm
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig O=~/project/qemu/out/u-boot-arm
# 编译vexpress开发板,输出文件放到~/project/qemu/out/u-boot-arm
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j12 O=~/project/qemu/out/u-boot-arm
# 回到工程主目录
cd ~/project/qemu

其中交叉编译路径根据自己解压路径修改即可,然后运行./script/build_uboot.sh编译uboot。编译过程中可能会出现一些依赖包没安装,参考末尾FAQ章节进行处理即可。另外在编译过程中会出现图形化配置界面,在这里我们不需要进行二次配置,直接按两次esc退出即可。

编译完成之后,uboot的输出文件都在~/project/qemu/out/u-boot-arm目录下:
在这里插入图片描述
其中u-boot及是我们需要的uboot文件:使用file查看一下起文件结构:
在这里插入图片描述
可以看到,它是32为ARM格式ELF文件。

3、FAQ

1、编译过程中出现/bin/sh: 1: bison: not found错误,如下:
在这里插入图片描述
这是因为没有安装bison工具,使用如下命令进行安装:

sudo apt install bison

2、编译过程中出现Unable to find the ncurses package
在这里插入图片描述
解决方法也很简单,根据提示安装libncurses-dev即可:

sudo apt install libncurses-dev

3、编译过程中出现/bin/sh: 1: flex: not found
在这里插入图片描述
使用如下命令安装flex:

sudo apt install flex

4、编译过程出现确少openssl头文件。
在这里插入图片描述
使用如下命令安装openssl开发库:

sudo apt-get install libssl-dev
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思禾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值