QT5交叉编译保姆级教程(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环境(QT中的一些功能、组件需要用到)

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

#注意,一些较新的系统,比如deepin v23中可能没有这几个包,需要修改为:
sudo apt install python2 -y
sudo apt install python2-dev -y
sudo apt install python3 -y
sudo apt install python3-dev -y
sudo apt install python3-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/qthttps://download.qt.io/archive/qt

qt5交叉编译安装,QT / C++,QT,编程,编译

根据自身需求选择一个版本下载。源码版本不需要和当前安装的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

如图:

qt5交叉编译安装,QT / C++,QT,编程,编译

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

执行成功的话,如图:

qt5交叉编译安装,QT / C++,QT,编程,编译

编译:

make -j 12

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

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

编译成功后,如图:

qt5交叉编译安装,QT / C++,QT,编程,编译

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

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 如图:

qt5交叉编译安装,QT / C++,QT,编程,编译

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

qt5交叉编译安装,QT / C++,QT,编程,编译

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

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

qt5交叉编译安装,QT / C++,QT,编程,编译

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

qt5交叉编译安装,QT / C++,QT,编程,编译

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

修改好的qmake.conf文件内容:

#
# qmake configuration for building with mips64el-linux-gnuabi64-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = mips64el-linux-gnuabi64-gcc
QMAKE_CXX               = mips64el-linux-gnuabi64-g++
QMAKE_LINK              = mips64el-linux-gnuabi64-g++
QMAKE_LINK_SHLIB        = mips64el-linux-gnuabi64-g++

# modifications to linux.conf
QMAKE_AR                = mips64el-linux-gnuabi64-ar cqs
QMAKE_OBJCOPY           = mips64el-linux-gnuabi64-objcopy
QMAKE_NM                = mips64el-linux-gnuabi64-nm -P
QMAKE_STRIP             = mips64el-linux-gnuabi64-strip
load(qt_config)

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

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

如图:

qt5交叉编译安装,QT / C++,QT,编程,编译 执行成功如图:

qt5交叉编译安装,QT / C++,QT,编程,编译

编译安装和aarch64是一样的:

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

五、配置QT

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

 qt5交叉编译安装,QT / C++,QT,编程,编译

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

qt5交叉编译安装,QT / C++,QT,编程,编译

qt5交叉编译安装,QT / C++,QT,编程,编译添加好后,点击右下角的“Apply”按钮。然后点击“构建套件(Kit)”选项卡:

qt5交叉编译安装,QT / C++,QT,编程,编译

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

qt5交叉编译安装,QT / C++,QT,编程,编译

其中,名称可自行修改;

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

注意:Qt mkspec 一定要填写正确

arm的Qt mkspec:linux-aarch64-gnu-g++

mips的Qt mkspec:linux-mips64el-g++

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

mips64的配置也差不多:

qt5交叉编译安装,QT / C++,QT,编程,编译

六、验证测试

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

打开或者创建工程时,可能无法选择arm64、mips64,如图:

qt5交叉编译安装,QT / C++,QT,编程,编译

不要紧,选择其它的先完成创建!

点击左侧的“项目”,然后再点击“Build & Run”项下的arm64、mips64即可添加:

qt5交叉编译安装,QT / C++,QT,编程,编译

点击左侧工程,选择构建套件,即可切换:

qt5交叉编译安装,QT / C++,QT,编程,编译

先测试aarch64架构:

qt5交叉编译安装,QT / C++,QT,编程,编译

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

qt5交叉编译安装,QT / C++,QT,编程,编译

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

qt5交叉编译安装,QT / C++,QT,编程,编译

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

再看一下MIPS64的编译结果:

qt5交叉编译安装,QT / C++,QT,编程,编译

OK,搞定收工..

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

#2023.11.24补充内容

以前一直使用统信UOS,这两天突然想试一下深度(deepin)系统,虽然他们是一家..

于是装上deepin最新的v23 版本,选择了6.1内核。。结果却遇到了一些错误!

错误一、安装组件时,没有python、python-dev、python-pip这几个包,需更改为:python2、python2-dev、python3、python3-dev、python3-pip
错误二、较低的Qt源码版本(如文中使用的5.12.2),在执行configure参数配置、make编译时报错:error: ‘numeric_limits’ is not a member of ‘std’,如下图:

qt5交叉编译安装,QT / C++,QT,编程,编译

而在编译较新的版本,如5.15.11时则正常。

解决方法:使用文本编辑器打开报错的文件,在文件头部合适的位置加上这句:#include <limits>

5.12.2版本有5个报错文件,可以使用下面的命令快速修改:

#快速修改报错文件
sed -i '43a#include <limits>' ./qtbase/src/corelib/global/qendian.h
sed -i '44a#include <limits>' ./qtbase/src/corelib/tools/qbytearraymatcher.h
sed -i '48a#include <limits>' ./qtbase/src/tools/moc/generator.cpp
sed -i '54a#include <limits>' ./qtdeclarative/src/qml/jsruntime/qv4propertykey_p.h
sed -i '52a#include <limits>' ./qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h
#注意:命令里的文件路径使用的是相对路径,执行时一定要在源码根目录!

再次提醒,执行命令时一定要在源码根目录!命令可以直接粘贴在终端中执行,如图:

qt5交叉编译安装,QT / C++,QT,编程,编译

其它版本就不一一测试了..文章来源地址https://www.toymoban.com/news/detail-754957.html

到了这里,关于QT5交叉编译保姆级教程(arm64、mips64)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境

    最近公司给了我一块Jetson Orin Nano的板子,先刷了系统(1.Jetson Orin Nano Developer Kit系统刷机)又让我搭建交叉编译环境,所以有了下面的文章 1.1设备环境 1.1.1 Server: 1.1.2 Jetson Orin Nano : 1.2 Qt相关下载地址 1.2.1 Qt源码下载 Qt源码下载(最好下载tar.xz,tar格式可能在windows下编辑过,后期

    2024年02月12日
    浏览(45)
  • YOLOV5 自动刷图脚本实战(六)之OpenCV+CMake+MinGW-64 Qt5编译

    目录  一、OpenCV下载 1、官网地址: 2、安装解压OpenCV 二、OpenCV-Contrib下载 1、下载

    2024年02月03日
    浏览(42)
  • x86架构ubuntu 搭建arm64交叉编译环境及QT编译arm64架构工程

    背景:由于最近项目需要做国产系统适配,很多软件需要重新编译以适配不同架构CPU。 环境: 1、主机win10 64bit   vmware虚拟主机ubuntu1804 64bit 2、vmware虚拟主机已经安装了qt5.14.2及qt_create4.11.1 一、C/C++程序交叉编译 1、交叉编译环境搭建 ①选定编译工具aarch64-linux-gnu ②安装交叉

    2024年02月09日
    浏览(61)
  • arm鲁班猫lubanCat rk3588 ubuntu20.04下源码编译安装qt5.12.5

    ubuntu-18.04上通过源码来编译及安装Qt-5.12库 QT官方线上文档for linux qt源码下载地址 进入下面目录下载 【new_archive/qt/5.12/5.12.5/single/qt-everywhere-src-5.12.5.tar.xz】 将压缩包放到Ubuntu某目录,并进入解压: 初步解压出:qt-everywhere-src-5.12.5.tar 最终得到:qt-everywhere-src-5.12.5 或者【右键】

    2024年04月11日
    浏览(57)
  • Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130381428 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…   mysql驱动版本msvc2015x32版本调

    2023年04月26日
    浏览(80)
  • 【Qt5.12】Qt5.12安装教程[通俗易懂]

    Qt5.12下载网址: Index of /archive/qt/5.12/5.12.2 选择Windows平台, Linux和Mac平台类似 下载好之后的安装包: Step1: 双击安装包, 稍等片刻, 然后点击next Step2: 如果没有账号, 则选择skip Step3: Qt设置欢迎界面, 选择下一步 Step4: 选择安装路径 Step5: 选择组件, 然后选择下一步 Step6: 同意许可协议

    2024年02月13日
    浏览(44)
  • Qt —— 编译Qt5版本QFTP库,并实现连接服务、获取列表、上传、下载、删除文件等操作(附源码、附基于Qt5编译好的QFTP库)

    示例效果1   示例效果2   介绍      QFTP是Qt4的库,Qt5改用了QNetworkAccessManager来代替。但是Qt5提供的QNetworkAccessManager仅支持FTP的上传和下载,所以只能 将QFTP库编译为Qt5的库来进行调用。      QFTP在Github的下载地址:https://github.com/qt/qtftp   客户端源码生成的rele

    2024年01月20日
    浏览(41)
  • Qt5开发环境-银河麒麟V10ARM平台

    前言 近期因参与开发的某个软件需要适配银河麒麟v10arm 平台,于是自己搭建起一套Qt 开发环境,在此记录下具体过程,以供有需要的朋友参考。一开始手上并没有Arm架构的PC,先在Windows下用Vs2017和QtCreator 开发,软件开发快结束的时候Arm PC到了。Qt 没有提供可直接安装的arm架

    2024年02月12日
    浏览(58)
  • Qt5.15.2 Webassembly源码裁剪编译

    第一步:      .configure -debug-and-release -opensource -prefix \\\"D:qt-everywhere-srccompFile\\\" -platform win32-g++ -nomake examples 第二步:     mingw32-make -j4 第三步:     mingw32-make install   编译core与gui模块:     C:Qt5.15.2yuanmaqt-everywhere-src-5.15.2qtbasesrcgui     C:Qt5.15.2yuanmaqt-everywhere-src

    2024年02月10日
    浏览(55)
  • Qt5.12.6配置Android Arm开发环境(Linux)

    1.安装jdk 2.安装android studio 3.安装sdk 与ndk  设置代理  安装SDK工具  安装SDK Platform 安装QT   选择JDK 1.8安装路径,SDK与NDK路径  如出现Platform SDK或者Platform Build Tools未安装,点击Update Installed  配置成功后可看到ARMv7与AMD-v8a kits Qt Version也可看到ARMv7与AMD-v8a   如果 有安装了CMake,也

    2024年01月21日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包