QT5交叉编译入门级教程(arm64、mips64)

 更新时间:2023年11月01日 14:55:42   作者:skyyx2002  
交叉编译就是在当前系统平台上,开发编译运行于其它平台的程序,比如本文硬件环境是x86平台,但是编译出来的程序是在arm64架构、mips64等架构上运行,本文给大家分享QT5交叉编译入门级教程(arm64、mips64),感兴趣的朋友一起看看吧

什么是交叉编译?

简单说,就是在当前系统平台上,开发编译运行于其它平台的程序。

比如本文硬件环境是x86平台,但是编译出来的程序是在arm64架构、mips64等架构上运行

本文使用的操作系统:统信UOS家庭版22.0

一、安装QT5(如果已安装跳过此步):

sudo apt update
sudo apt install qtbase5-dev -y
sudo apt install qtcreator -y

二、安装编译相关组件

sudo apt install build-essential libgl1-mesa-dev gperf libclang-dev -y

#安装python环境(如果你的程序中不需要调用python,可以不装)

sudo apt install python -y
sudo apt install python-dev -y
sudo apt install python-pip -y

#安装aarch64(arm64)编译链工具。国产CPU,如飞腾、华为麒麟等都是这个架构

sudo apt install g++-aarch64-linux-gnu -y
sudo apt install gcc-aarch64-linux-gnu -y

#安装mips64el编译链工具。龙芯3A3000、3A4000等是此架构。龙芯最新的LoongArch架构似乎还没有编译链工具

sudo apt install gcc-mips64el-linux-gnuabi64 -y
sudo apt install g++-mips64el-linux-gnuabi64 -y

三、下载QT5源码

QT官方下载地址:Index of /archive/qt

https://download.qt.io/archive/qt

根据自身需求选择一个版本下载。源码版本不需要和当前安装的一致,但最好不要低于当前安装的版本。QT6和QT5差别太大,不要选择。

这里我随手选了一个5.12.2的版本,可以直接在网页上下载、用下载工具下载、还可以使用命令下载:

#下载源码:
wget https://download.qt.io/archive/qt/5.12/5.12.2/single/qt-everywhere-src-5.12.2.tar.xz
#下载好后,解压源码:
tar -xvf qt-everywhere-src-5.12.2.tar.xz​

四、配置和编译源码

1.配置编译QT5的aarch64架构源码

进入刚才解压好的源码目录中,打开终端输入:

#配置编译参数
./configure -release -opensource -confirm-license -xplatform linux-aarch64-gnu-g++ -prefix /usr/local/qt5.12.2arm -nomake examples -no-opengl -silent -qpa linuxfb

如图:

其中:/usr/local/qt5.12.2arm 是编译后的安装目录,可自行修改

执行成功的话,如图:

编译:

make -j 12

-j 12参数表示使用12个线程进行编译,根据电脑的CPU线程数进行设置即可。

编译过程较长,如果编译过程中需要进行其它操作,适当减少线程数,以免操作太卡。

编译成功后,如图:

将编译好的文件安装到指定位置(安装位置在前面配置参数时已设置):

sudo make install

2.配置编译QT5的mips64架构源码

先将前面解压的qt-everywhere-src-5.12.2文件夹改名或者删除,然后重启一下电脑!

为什么要重启?因为我在编译完aarch64之后,接着编译mips64时编译出错,重启之后才正常。

为了避免不必要的错误,因此建议先重启一下。

使用命令重新解压源码:

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

QT源码里并没有mips64的编译项,因此这里需要手动创建。

进入刚才解压的源码目录,再进入其下级目录:qtbase/mkspecs 如图:

找到linux-aarch64-gnu-g++文件夹,将其复制一份。如图:

将其改名为:linux-mips64el-g++  然后双击进入,里面有两个文件:qmake.conf、qplatformdefs.h

打开qmake.conf文件,打开后如图:

将aarch64全部替换为mips64el、gnu替换成gnuabi64,替换后如图:

修改完成,保存关闭文件即可。

回到源码根目录,在终端中执行参数配置:

./configure -release -opensource -confirm-license -xplatform linux-mips64el-g++ -prefix /usr/local/qt5.12.2mips64 -nomake examples -no-opengl -silent -qpa linuxfb

如图:

 执行成功如图:

编译安装和aarch64是一样的:

make -j12  #编译源码。注意根据自已CPU的线程数修改12这个数
sudo make install  #安装编译好的源码

五、配置QT

打开Qt Creator,选择 工具->选项->Kits->Qt Versions 如图:

点击右侧的“添加...”按钮,在弹出的窗口中选择前面编译安装好的QT目录下的qmake,如图:

添加好后,点击右下角的“Apply”按钮。然后点击“构建套件(Kit)”选项卡:

点击右侧“添加”按钮,配置如图:

其中,名称可自行修改;

编译器可以选择gcc,只是我比较喜欢Clang,所以这里选的Clang;

注意:Qt mkspec 一定要填

至于红色的感叹号,这个不用在意,不影响编译。

mips64的配置也差不多:

六、验证测试

现在,创建一个工程来验证一下交叉编译是否正常。

先测试aarch64架构:

需要注意的是,异架构的程序是不能直接运行的。所以我们不运行它,直接点击左下方的“锤子”或者按Ctrl+B来构建。

编译没有出错。使用file命令,看一下编译后的文件:

如图所示,编译出来的程序确实是ARM aarch64 架构!

再看一下MIPS64的编译结果:

OK,搞定收工..

关于龙芯最新的“龙”(LoongArch)架构,似乎还没有编译链工具,因此还没法交叉编译。。

到此这篇关于QT5交叉编译保姆级教程(arm64、mips64)的文章就介绍到这了,更多相关QT5交叉编译内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 2048小游戏C语言实现代码

    2048小游戏C语言实现代码

    这篇文章主要为大家详细介绍了2048小游戏C语言实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 怎样用cmd运行C程序

    怎样用cmd运行C程序

    这篇文章主要介绍了怎样用cmd运行C程序?今天就来和大家分享一下用cmd运行C程序的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • C语言中数据如何存储进内存揭秘

    C语言中数据如何存储进内存揭秘

    使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么
    2022-08-08
  • C++使用cjson操作Json格式文件(创建、插入、解析、修改、删除)

    C++使用cjson操作Json格式文件(创建、插入、解析、修改、删除)

    本文主要介绍了C++使用cjson操作Json格式文件(创建、插入、解析、修改、删除),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • OpenCV实现图像细化算法

    OpenCV实现图像细化算法

    本文主要介绍了OpenCV实现图像细化算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • c++实现解析zip文件的示例代码

    c++实现解析zip文件的示例代码

    这篇文章主要为大家详细介绍了如何利用c++实现解析zip文件,并对流式文件pptx内容的修改,文中的示例代码讲解详细,有需要的小伙伴可以参考一下
    2023-12-12
  • Visual Studio Code (vscode) 配置 C / C++ 环境的流程

    Visual Studio Code (vscode) 配置 C / C++ 环境的流程

    这篇文章主要介绍了Visual Studio Code (vscode) 配置 C / C++ 环境的流程,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • C语言基于单链表实现通讯录功能

    C语言基于单链表实现通讯录功能

    这篇文章主要为大家详细介绍了C语言基于单链表实现通讯录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • C++ STL容器stack和queue详解

    C++ STL容器stack和queue详解

    这篇文章主要介绍了C++ STL容器stack和queue详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • 教你如何使用C++ 统计地铁中站名出现的字的个数

    教你如何使用C++ 统计地铁中站名出现的字的个数

    通过本文教大家如何使用C++ 统计地铁中站名出现的字的个数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-01-01

最新评论