jjzjj

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

战术性白给 2024-06-04 原文

目录

一、在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~。

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

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  3. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

  4. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  5. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  6. Qt Designer的简单使用 - 2

    在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用C++代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。用C++代码编写图形界面的问题就是不直观,因此Qt项目开发了专门的可视化图形界面编辑器——QtDesigner(Qt设计师)。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。本节就演示一下QtDesigner的简单使用,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。使用QtDesigner设计界面在开始菜单中找到「Q

  7. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  8. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  9. ruby - ri 有空文件 – Ubuntu 11.10, Ruby 1.9 - 2

    我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da

  10. ruby - 在 Ubuntu 14.04 中使用 Curl 安装 RVM 时出错 - 2

    我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack

随机推荐