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

汇创慧玩

  • 写在前面
  • 1. 查看系统架构相关指令及ARM64交叉编译器环境搭建
  • 2. 安装QEMU
  • 3. 配置arm64(aarch64)的运行环境
  • 4. 验证arm64(aarch64)的运行环境

写在前面

苦辣酸甜时光八载,春夏秋冬志此一生
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官网下载指定版本编译器;

Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第1张图片

注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					#查看安装版本,出现版本即安装成功																

Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第2张图片

安装其它依赖:

sudo apt-get install flex bison

Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第3张图片

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

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									#执行安装

Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第4张图片Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第5张图片Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第6张图片Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第7张图片在这里插入图片描述
Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第8张图片
Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第9张图片
执行配置通过
Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第10张图片
Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第11张图片Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第12张图片

然后在环境变量里 /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

Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第13张图片

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

我们需要准备aarch64(即arm64)的文件系统rootfs
1)下载arm64(aarch64)对应版本的base镜像:
从Ubuntu官网下载对应版本的base镜像,笔者下载的ubuntu-base-16.04.6-base-arm64;
Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第14张图片
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		#解压

Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第15张图片

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 用户名

Qt教程4-Ubuntu(x86_64)上用QEMU建立arm64(aarch64)的模拟开发环境_第16张图片

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

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

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

你可能感兴趣的:(Ubuntu,国产系统kylin,qemu,qt,ubuntu,开发语言,kylin,arm开发,编辑器)