Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境

3 篇文章 0 订阅
1 篇文章 0 订阅

写在前面

苦辣酸甜时光八载,春夏秋冬志此一生
Qt简介:
Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。
Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。
Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。

QEMU简介:
QEMU(Quick Emulator)是一个开源的虚拟机监视器和模拟器,它可以模拟多种硬件平台,包括处理器架构和设备。通过QEMU,您可以在不同的硬件平台上运行不同的操作系统和应用程序。
QEMU支持的硬件平台非常广泛,包括x86、ARM、MIPS、PowerPC等。您可以使用QEMU模拟运行各种操作系统,如Linux、Windows、Android等。此外,QEMU还支持模拟各种设备,如网络接口卡、磁盘驱动器、USB设备等。

环境:
PC系统:Ubutu20.04(x86_64架构) <本机>
Qt版本:Qt5.12.8(GCC 9.3.0,64bit) <本机>
Qt Creator 版本:4.11.0 <本机>
交叉编译器:gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu <本机>
国产系统:Kylin Linux Advanced Server release V10(4.19.90-25.10.v2101.ky10.aarch64) 部署环境<即arm64架构>
对应版本的ubuntu-base镜像:ubuntu-base-16.04.6-base-arm64
GCC:v8.3.0 部署环境<即arm64架构>

最近由于项目需要做国产系统适配,软件需要适配不同架构CPU!同时又随时需要将x86_64架构下交叉编译的程序部署在ARM64环境进行运行验证,为了便捷开发过程,故在本机x86_64架构下采用QEMU 来模拟出ARM64的开发环境!这样就可以临时脱离ARM64硬件实物,方便调试!
在探索过程也是出现了星星点点的未知错误,摸黑探路,绕了许多弯路。基于此特将经验寄予此文,望更多志同道合的朋友在这条探索的路上少走弯路,尽入主题!

1. 查看系统架构相关指令及ARM64交叉编译器环境搭建

详见笔者Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程进行配置;

2. 安装QEMU

安装方式有两种:指令安装和源码编译安装,选其中一种即可
1)指令安装:
指令安装自动适配本机合适版本,无需指定较为方便!

sudo apt-get install qemu qemu-user-static binfmt-support debootstrap

这种方式安装的QEMU版本一般不是最新的,在Ubuntu20.04下安装的QEMU版本为4.2.1,如果需要更新的版本的话,需要采用下一种方式。
另一种就是使用QEMU源码进行编译安装,好处是可以安装任意版本的QEMU,下文中会详细描述安装步骤以及安装过程中遇到问题的解决办法。
2)源码编译安装:

注1: 从QEMU官网下载指定版本编译器;

在这里插入图片描述

注2: 从GitHub下载指定版本编译器;
注3:从GitLab下载指定版本编译器;

下载相应版本的源码,解压安装。或者也可以使用以下指令<笔者采用该方法>
特别提示: 源码编译安装须先安装ninja,否则会报错

git clone https://github.com/ninja-build/ninja.git && cd ninja    	#下载源码并打开源码目录
./configure.py --bootstrap				#执行配置文件
sudo cp ninja /usr/bin/						#复制ninja执行文件到系统
ninja --version					#查看安装版本,出现版本即安装成功																

在这里插入图片描述

安装其它依赖:

sudo apt-get install flex bison

在这里插入图片描述

①官网安装 下载太慢了!!!~~~!!!

wget https://download.qemu.org/qemu-8.2.0.tar.xz  #下载源码
tar xvJf qemu-8.2.0.tar.xz  # 解压
mkdir build && cd build  # 在下载目录新建文件夹build(这是必须的,因为configure命令必须在build文件夹下执行)
# 以下均在/build目录下
./../qemu-8.2.0/configure -prefix ~/path/test/qemu-install		#执行配置文件,可参看上一个教程
make  # 编译源码
make install  # 安装

②GitLab安装

mkdir -p ~/path/test && cd ~/path/test						#创建qemu目录
git clone https://gitlab.com/qemu-project/qemu.git		#下载源码
cd qemu && ls				# 进入下载目录并查看目录详情
git submodule init		# 初始化子模块
git submodule update --recursive				#更新子模块与主仓库中的子模块代码同步
git branch					#查看当前分支
./configure --help		#查看配置帮助文件,可参看上一个教程

cd ../ && mkdir qemu-build && mkdir qemu-install 		#在~/path/test下创建编译和安装目录
cd qemu-build/			#进入编译目录
./../qemu/configure -prefix ~/path/test/qemu-install	#执行配置文件,可参看上一个教程
make -j $(nproc) 2>&1 | tee build.log							#执行make编译,等待十几分钟...
make install									#执行安装

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行配置通过
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

然后在环境变量里 /etc/profile <笔者在此文件添加>或 ~/.bashrc 添加全局变量 <注意添加自己正确路径>并source 可参看笔者上一个教程
$PATH:后面路径为qemu/bin的安装路径

sudo vim /etc/profile 

export PATH=$PATH:~/path/test/qemu-install/bin #可参看笔者上一个教程

查看配置是否成功:输入qemu 后按TAB是否出现提示(有对应版本即表示配置成功),查看qemu版本信息:

qemu-aarch64 --version

在这里插入图片描述

3. 配置arm64(aarch64)的运行环境

我们需要准备aarch64(即arm64)的文件系统rootfs
1)下载arm64(aarch64)对应版本的base镜像:
Ubuntu官网下载对应版本的base镜像,笔者下载的ubuntu-base-16.04.6-base-arm64;
在这里插入图片描述
2)构建编译环境准备:

mkdir -p ~/path/test/arm64rootfs && cd ~/path/test/arm64rootfs		#创建并打开arm64rootfs目录
wget http://cdimage.ubuntu.com/ubuntu-base/releases/16.04.6/release/ubuntu-base-16.04.6-base-arm64.tar.gz	#下载镜像,也可直接在网页下载
sudo tar -xpf ubuntu-base-16.04.6-base-arm64.tar.gz -C  ~/path/test/arm64rootfs		#解压

在这里插入图片描述

3)注册aarch64的运行环境:

update-binfmts --display			#查看当前x86 Ubuntu上的注册情况
sudo update-binfmts --enable qemu-aarch64	#注册aarch64的运行环境

为了能在x86 Ubuntu上chroot到~/path/test/arm64rootfs并执行aarch64的程序,还需要将 qemu-aarch64-static 拷贝到 ~/path/test/arm64rootfs/usr/bin/

sudo cp -av ~/path/test/qemu-install/bin/qemu-aarch64 ~/path/test/arm64rootfs/usr/bin/

在这里插入图片描述配置arrch64 Ubuntu的网关:<其它硬件配置按需进行>

sudo cp /etc/resolv.conf ~/path/test/arm64rootfs/etc/resolv.conf

chroot到aarch64 Ubuntu的rootfs:

sudo chroot ~/path/test/arm64rootfs

下面的操作好像没啥用,可忽略
配置root用户密码:

passwd root

添加用户以及设置密码:

useradd -G sudo -m -s /bin/bash 用户名
passwd 用户名

在这里插入图片描述

4. 验证arm64(aarch64)的运行环境

可将上个教程Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程编译后得到的ARM aarch64架构可执行文件复制到该文件目录下运行验证。笔者还验证了依赖自己编译的aarch64动态链接库的程序也是OK的
在这里插入图片描述
过程中有些操作详情笔者略过,可参考笔者上个教程!
Qt教程3-Ubuntu(x86_64)上配置arm64(aarch64)交叉编译环境及QT编译arm64架构工程
笔者还参考了该片文章x86 Ubuntu上建立aarch64/arm64 Ubuntu的交叉编译链
至此,恭喜您! ARM64(aarch64)的模拟开发环境已成功配置,可以开始使用了!!!

感谢阅读,我是汇创慧玩,希望文章能够解决您的问题。
事为之,须极致!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值