自学内容网 自学内容网

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


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

1、交叉编译工具安装

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

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

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

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.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-gnueabihf/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-gnueabihf- vexpress_ca9x4_defconfig O=~/project/qemu/out/u-boot-arm
# 配置vexpress开发板,输出文件放到~/project/qemu/out/u-boot-arm
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig O=~/project/qemu/out/u-boot-arm
# 编译vexpress开发板,输出文件放到~/project/qemu/out/u-boot-arm
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -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

原文地址:https://blog.csdn.net/sinat_33909696/article/details/142424824

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!