当前位置: 首页 > article >正文

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

http://www.kler.cn/a/314527.html

相关文章:

  • 浅谈:基于三维场景的视频融合方法
  • 陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解
  • 设计模式之责任链模式(Chain Of Responsibility)
  • 以色列支付龙头遭DDoS攻击,各地超市加油站等POS机瘫痪
  • 记录学习react的一些内容
  • 3.5【数据库系统】ER图
  • Android14 手机蓝牙配对后阻塞问题解决
  • python 自动化测试接口
  • 递归快速获取机构树型图
  • 【赵渝强老师】基于ZooKeeper实现Hadoop HA
  • DELPHI编译软件时带上当前IDE的版本号
  • 2024/9/21 leetcode 21.合并两个有序链表 2.两数相加
  • Hive企业级调优[5]—— HQL语法优化之数据倾斜
  • [Vue] 从零开始使用 Vite 创建 Vue 项目
  • webrtc gclient sync报错问题解决
  • 独孤思维:图书电商,又精进了
  • SwiftUI里的ForEach使用的注意事项
  • 某建筑市场爬虫数据采集逆向分析
  • Cartographer源码理解
  • ccfcsp-202403(1、2、3、4)
  • Compiler Explorer 开源项目-在线编译器网站
  • 由于安全风险,安全领导者考虑禁止人工智能编码
  • 【C++】—— string模拟实现
  • UWA支持鸿蒙HarmonyOS NEXT
  • 2024年最新Redis内存数据库主从复制、哨兵模式、集群部署等详细教程(更新中)
  • 考研数学精解【5】