0


Ubuntu20.04配置aarch64的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 ....,自行百度吧。好了,就先分享到这里ヾ( ̄▽ ̄)ByeBye

标签: ubuntu qt arm

本文转载自: https://blog.csdn.net/qq_63986699/article/details/127731136
版权归原作者 战术性白给 所有, 如有侵权,请联系我们删除。

“Ubuntu20.04配置aarch64的Qt6环境(亲测有效)”的评论:

还没有评论