Ubuntu20.04配置aarch64的Qt6环境(亲测有效)

2023-05-16

目录

一、在Ubuntu20.04配置aarch64交叉编译环境

二、在Ubuntu20.04下载并编译aarch64系统架构的Qt6源码

三、在arm64芯片板上配置Qt6环境

四、配置后出现的问题及解决办法


网上大多数文章都是针对Qt5版本的配置(不编译源码的话,搭建Qt5环境只需要半天(ˉ▽ˉ;)...),按照这些步骤进行Qt6的配置踩了很多坑,现在把我配置Qt6的整个过程记录下来,有这方面的需求可以参考一下,耗时一周多,属实不易/(ㄒoㄒ)/~~

一、在Ubuntu20.04配置aarch64交叉编译环境

1.第一步很重要!首先要看一下你的ubuntu系统是不是arm64位的,如果只是在windows上下个虚拟机来装的ubuntu系统,那么该系统架构是X86-64,而我需要的系统架构是aarch64的,这样弄出来的qt库跟交叉编译工具是不匹配的,也可以理解为要在ubuntu系统上搭建一个aarch64环境。当然,如果芯片板子上的内存足够,可以直接编译Qt源码,则可跳过这一步( ‵▽′)ψ。

说到内存,建议分配给虚拟机50~100G左右的内存(编译到一大半提示内存不够(╯‵□′)╯︵┻━┻)

具体步骤参考这篇文章:https://blog.csdn.net/u012841922/article/details/121048387

查看系统架构

sudo uname -a

2.更新软件源和升级更新软件(以下在aarch64系统架构里进行) 

apt-get update
apt-get upgrade

3.下载交叉编译工具

apt-get install gcc-aarch64-linux-gnu
apt-get install g++-aarch64-linux-gnu

4.添加到环境变量中(这里vi可能会报错,因为这相当于一个新系统,很多东西都没有,自行下载即可)

vi /etc/profile

在文件末尾添加

export PATH="/usr/bin:$PATH"

输入以下指令或reboot重启使环境立即生效

source /etc/profile

5.查看版本(gcc/g++),有版本显示即可

aarch64-linux-gnu-gcc -v

二、在Ubuntu20.04下载并编译aarch64系统架构的Qt6源码

1.首先下载Qt6.4.0的源码压缩包

下载地址:https://download.qt.io/official_releases/qt/6.4/6.4.0/single/

 

2.把下载的源码压缩包移动到aarch64环境目录中

sudo mv 下载源码的目录/qt-everywhere-src-6.4.0.tar.xz /rootfs/usr/bin/

3.chroot到aarch64系统中,进到/usr/bin/目录解压源码

tar -xvf qt-everywhere-src-6.4.0.tar.xz

4.解压完毕,进入到源码目录,修改文件 

vi qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf

5.增加以下内容,并在每个编译器前面添加路径(板子芯片是armv8架构)

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

具体如下:

6.查看Qt6源码文档(这一步容易被忽略)

cat README.md

主要看以下部分

这是编译qt6源码所需要的,我只有perl和python3,部分解决方法参考下面文章:

安装cmake:https://blog.csdn.net/qq_27350133/article/details/121994229

安装python:https://blog.csdn.net/GerZhouGengCheng/article/details/118468389

解决在编译过程中perl出现警告:https://blog.csdn.net/gusijin/article/details/105512007

安装ninja,直接终端执行以下指令即可

apt-get install ninja-build

安装xcb(图形界面):https://blog.csdn.net/luoyayun361/article/details/118493387

7.开始编译并安装

./configure -prefix /usr/bin/arm64qt6.4.0 -xplatform linux-aarch64-gnu-g++

其中-prefix为保存Qt库的路径,-xplatform为目标平台。

完成后再执行cmake,此过程需要较长时间,建议挂在一边摸鱼(bushi)。

cmake --build . --parallel

编译完成后进行安装

cmake --install .

最后Qt6源码库会安装在指定的目录下 

8.可以查看下编出来的源码系统架构

cd arm64qt6.4.0/lib
readelf -h libQt6Xml.so

显示系统架构为aarch64即可,具体如下:

  

三、在arm64芯片板上配置Qt6环境

1.首先查看板子上的对应配置,比如交叉编译工具链(gcc/g++)、cmake等,具体安装步骤参考一、二步骤。(当然,如果是一开始直接在板上操作就可以跳过这一步了)如果某个配置在板子上原来就有,可以查看其版本,最好与上面的版本一致,比如查看cmake版本:

cmake --version

2.安装qtcreator,默认安装的版本是5.12.8的

sudo apt-get install qtcreator

3.用U盘把编出来的qt6源码拷贝到arm板上的/usr/bin/目录下

4.启动qtcreator

su
qtcreator

5.配置qt6环境

工具➡选项

编译器➡添加➡GCC➡C/C++

修改如下:

Qt Versions➡添加

构建套件➡添加

添加设置如下:

6.至此,aarch64环境的qt6基本配置完毕o(* ̄▽ ̄*)ブ,可以把项目文件放到芯片板子上看看效果了,以下是本人项目构建遇到的问题,在此记录一下,没有这些问题的可以忽略。

四、配置后出现的问题及解决办法

问题1:Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version "0.5.0")

sudo apt install libxkbcommon-dev

问题2: libOpenGL.so.0: cannot open shared object file: No such file or directory

1.在虚拟机根目录下查找该库文件,U盘拷贝以下三个系统架构为aarch64库文件

2.进到这三个库文件的目录下,并查看这三个文件

3.复制软连接文件

sudo cp -r -L libOpenGL.so U盘目录

复制到芯片目录/usr/lib/aarch64-linux-gnu,并覆盖一下软连接

sudo ln -sf libOpenGL.so.0 libOpenGL.so
sudo ln -sf libOpenGL.so.0.0.0 libOpenGL.so.0

问题3:error: GLSL 4.50 is not supported. Supported versions are: 1.10,1.20,1.30,1.00 ES,3.00 ES,3.10 ES,and 3.20 ES

sudo vi ~/.bashrc

在最后一行添加

export MESA_GL_VERSION_OVERRIDE=4.5

问题4:运行项目时显示的中文为空白方框

1.进到虚拟机的字体目录

cd /usr/share/fonts/truetype

2.把图中的arphic复制到板子上的对应目录下(其他字体没试过),并添加到环境变量中

vi /etc/profile
export QT_QPA_FONTDIR=/usr/share/fonts/truetype/arphic

3.输入以下指令或reboot重启使环境立即生效

source /etc/profile

问题5:没有安装pcl(这里直接命令安装,默认版本是1.10的) 

sudo apt install libpcl-dev

总结:整个过程还是比较困难的,但也挺庆幸最终能实现预期效果的,中间有遗漏的步骤也请各位大佬见谅,毕竟移植系统啥的经常缺这缺那的,只能记住一些印象深的o_o ....,自行百度吧。好了,就先分享到这里ヾ( ̄▽ ̄)Bye~Bye~。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu20.04配置aarch64的Qt6环境(亲测有效) 的相关文章

随机推荐

  • 洛谷 P2078 朋友

    思路是分为两个并查集 xff0c 然后计算下男女人数 xff0c 然后直接比较 xff0c 选小的 代码写的有点麻烦好像 xff0c 交上去也没过 xff0c 虽然结果对了 其实第一遍已经发现有问题了 xff0c 因为比较的时候不小心把小于
  • 洛谷 P1359 租用游艇

    题目描述 长江游艇俱乐部在长江上设置了 nn 个游艇出租站 1 2 cdots n1 2 n 游客可在这些游艇出租站租用游艇 xff0c 并在下游的任何一个游艇出租站归还游艇 游艇出租站 ii 到游艇出租站 jj 之间的租金为 r i j
  • 寒假“最短路”题解

    1 P1359 租用游艇 题目描述 长江游艇俱乐部在长江上设置了 n 个游艇出租站 1 2 n 游客可在这些游艇出租站租用游艇 xff0c 并在下游的任何一个游艇出租站归还游艇 游艇出租站 ii 到游艇出租站 j 之间的租金为 r i j
  • 八数码问题

    I 问题介绍 八数码问题是一种经典的智力游戏 xff0c 也是一种搜索算法的经典案例 该问题是指在一个 3x3 的棋盘上 xff0c 有 8 个方块和一个空格 xff0c 每个方块上标有 1 8 的数字 xff0c 空格可以和相邻的方块交换
  • 基于VScode的CMake搭建与使用((〃>目<)的报错)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言 目录 文章目录 前言 一 Vscode和CMake 二 Vscode的C C 43 43 环境搭建 xff08 gcc g
  • vscode 找不到c++头文件(提示更新includePath)

    项目场景 xff1a vscode要写c 43 43 时iostream头文件找不到 xff08 我还找不见了两次 xff0c 记录一下 xff09 问题描述 c 43 43 找不到头文件 xff0c 想编程的心瞬间无了 xff08 首先我
  • vscode用户代码片段

    1 vscode入口 文件 gt 首选项 gt 用户片段 选择不同的应用范围 2 例子 prefix是提示短语 xff0c body是定义的代码片段 xff0c 每段都要双引号加逗号 xff0c 有双引号就需要加转义符 贴一个定义这种语言的
  • Vscode终端汉字乱码的简单解决方法

    这次的问题比较简单 xff0c 但是之间在网上找的时候也花费了些时间 xff1b xff08 记录一下 xff09 原因 xff1a 之所以会乱码主要是因为Vscode的配置的编译器gcc用的是UTF 8编码 xff0c 而windows用
  • 改错半月志:CMake报错(gcc —broken)

    项目场景 xff1a Windows 43 Vscode 43 Cmake下 上次误打误撞的报错没了之后后 xff0c 由于过于高兴 xff0c 我并没有接着去实现CMakeLists txt的接下来的操作 我记录一下 xff08 在终端输
  • 近世代数(丘维声)

    目录 文章目录 前言一 明确定义基本概念 xff1a 环及相关定义环同构映射 xff1a P17 域的定义群的定义提及重点欧拉函数整数环证明欧拉函数 xff1a 前言 近世代数复习辅助笔记 一 明确定义 基本概念 xff1a 划分 xff1
  • 问题5:检查conda --version显示conda:未找到命令

    解决方法如下 xff1a 1 找到你安装anaconda的文件夹 xff0c 以我的为例 xff0c 找到 Ananconda3 文件夹 2 打开 xff0c 在空白处右键选择 在终端中打开 3 依次输入如下代码 xff1a export
  • 问题7:虚拟机+ubuntu+安装cuda(傻瓜式操作)+cuda path配置+查看cuda的版本

    目录 1 cuda的安装 2 cuda path的配置 3 检查cuda的版本号 xff08 为安装pytorch做准备 xff09 建议看看下面的几条ps xff0c 可以避免踩坑 xff01 ps xff1a 本文所用ubuntu系统版
  • 刚入手树莓派(rasberry pi)最基本的配置,最全!(烧录系统+配置ssh+换源+图文保姆级教程)

    目录 一 下载官网烧录器 xff0c 进行树莓派ssh配置 WiFi设置 1 官网烧录器如下图所示 2 点击右下角设置按钮 xff0c 进行如下配置 xff0c 点击烧录即可 xff01 二 树莓派接通电源 xff0c 打开笔记本热点找到树
  • Windows配置深度学习环境:安装Pytorch(自动安装cudn和cudnn+图文+快速+很简单)几分钟搞定!

    目录 一 查看自己电脑支持的cuda最高版本二 打开Anaconda xff0c 进入自己创建的深度学习环境三 这用的是离线安装Pytorch xff0c 官网安装太慢1 打开 北京外国语大学镜像站 https mirrors bfsu e
  • Pycharm+Anaconda+yolov5-5.0部署(手把手教+解决一些运行过程中的问题+最全部署yolov5)

    目录 一 在pycharm打开克隆后的yolov5 5 0的项目二 配置pycharm的解释器1 依次打开 文件 gt 设置 gt 项目 gt python解释器2 打开配置好的deeplearn学习环境1 单击添加解释器 gt 单击添加本
  • python基础:(三)列表———操作列表(需有基本的for循环基础)

    目录 一 for循环遍历列表二 创建数值列表2 1利用函数对数值列表的一些基本操作2 1 1max 求数值列表中的最大值2 1 2min 求数值列表中的最小值2 1 3sum 求数值列表中数值的和 三 使用列表的一部分3 1切片3 2遍历切
  • python基础:(七)类

    目录 一 创建和使用类二 使用类和实例2 1给属性指定默认值2 2修改属性的值2 2 1直接修改属性的值2 2 2通过方法修改属性的值2 2 3通过方法对属性的值进行递增 三 继承3 1子类的方法 init 3 2给子类定义属性和方法3 3
  • MSSQL手工注入语句积累

    网上别人整理的语句 xff0c 留个Copy and exists select from sysobjects 判断是否是MSSQL and exists select from tableName 判断某表是否存在 tableName为
  • python基础:(八)文件

    目录 一 从文件中读取数据1 1读取整个文件1 2文件路劲1 3逐行读取 二 写入文件 一 从文件中读取数据 各位小伙伴 xff0c 文件这一块得好好学 xff0c 多看多敲代码 xff0c 以后处理数据 xff0c 写爬虫少不了这个 xf
  • Ubuntu20.04配置aarch64的Qt6环境(亲测有效)

    目录 一 在Ubuntu20 04配置aarch64交叉编译环境 二 在Ubuntu20 04下载并编译aarch64系统架构的Qt6源码 三 在arm64芯片板上配置Qt6环境 四 配置后出现的问题及解决办法 网上大多数文章都是针对Qt5