Qemu开发ARM篇-2、uboot交叉编译
文章目录
- 1、交叉编译工具安装
- 2、uboot交叉编译
- 3、FAQ
在继上一篇 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