一键编译QT5源码脚本(交叉编译arm64、mips64版本)

server/2024/10/10 20:10:52/

前言

这几天为了编写国产专用机上的软件,又盘起了交叉编译..

一开始想使用深度最新的deepin 23正式版做系统,搭建编译环境。然而交叉编译链工具直接安装失败!

然后又装了Debian12原版系统,编译环境倒是顺利搭建起来,但是编译出来的程序在目标系统中运行不了,可能是GLIBC版本过高导致..

然后又又又装了kali,结果和Debian12是一样的情况...

不过让我感到意外的是,kali中居然有龙架构(LoongArch)的编译链工具..

之前写过一篇文章,讲过交叉编译这事:

QT5交叉编译保姆级教程(arm64、mips64)

这里不重复去讲,主要是提供脚本..

最终的系统

折腾了好几个系统,最终选择了深度的deepin 20.9

下载地址:Index of /releases/20.9/

使用的QT源码版本:5.12.2

官网下载地址:https://download.qt.io/archive/qt/5.12/5.12.2/single/qt-everywhere-src-5.12.2.tar.xz     注意:现在需要科学上网才可以访问

本文基于此系统和源码版本,其它环境无法保证文中内容的可行性!

安装所需组件

#安装编译所需组件
sudo apt update
sudo apt install build-essential libgl1-mesa-dev gperf libclang-dev llvm flex bison -y#安装编译链工具:
sudo apt install g++-aarch64-linux-gnu -y
sudo apt install gcc-aarch64-linux-gnu -y
sudo apt install gcc-mips64el-linux-gnuabi64 -y
sudo apt install g++-mips64el-linux-gnuabi64 -y

aarch64(arm64)的一键编译脚本

#!/bin/bash
#注意修改sky为你自己系统的登陆密码。如果想手动输入密码,请把这条注释或删除
echo sky|sudo -S echo#设置QT源码解压后的目录,请自行修改!
qtDir="/ram/qt-everywhere-src-5.12.2"#设置QT源码文件位置,请自行修改!
qtFile="/media/user/DAF89D85F89D6095/qt-everywhere-src-5.12.2.tar.xz"#删除已存在的源码目录
if [ -d $qtDir ];thenecho 存在源码目录,删除中..rm -rf $qtDir
fi#重新解压源码
if [ -f  ];thenecho 开始解压..
#请自行修改/ram这个目录tar xf $qtFile --directory=/ram
fi#进入解压后的源码目录
cd $qtDir#QT5.12.2需要修改.h文件,以解决编译错误
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.hecho 配置编译参数..
#/usr/local/qt5.12.2arm 这个目录可自行修改
./configure -release -opensource -confirm-license -xplatform linux-aarch64-gnu-g++ -prefix /usr/local/qt5.12.2arm -no-opengl -silent -qpa linuxfb -nomake examples -nomake testsecho 编译开始
#根据自身CPU线程数修改12这个数
make -j12echo 开始安装
sudo make installecho 编译、安装完成
read -n 1

mips64的一键编译脚本

#!/bin/bash
#注意修改sky为你自己系统的登陆密码。如果想手动输入密码,请把这条注释或删除
echo sky|sudo -S echo#设置QT源码解压后的目录,请自行修改!
qtDir="/ram/qt-everywhere-src-5.12.2"#设置QT源码文件位置,请自行修改!
qtFile="/media/user/DAF89D85F89D6095/qt-everywhere-src-5.12.2.tar.xz"mkspecsDir="$qtDir/qtbase/mkspecs"#删除已存在的源码目录
if [ -d $qtDir ];thenecho 存在源码目录,删除中..rm -rf $qtDir
fi#重新解压源码
if [ -f  ];thenecho 开始解压..
#请自行修改/ram这个目录tar xf $qtFile --directory=/ram
fi#进入解压后的源码目录
cd $qtDir#QT5.12.2需要修改.h文件,以解决编译错误
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#创建mips64所需的目录
cp -R $mkspecsDir/linux-aarch64-gnu-g++ $mkspecsDir/linux-mips64el-g++
#替换qmake.conf文件内容
sed -i 's/aarch64-linux-gnu/mips64el-linux-gnuabi64/g' $mkspecsDir/linux-mips64el-g++/qmake.confecho 配置编译参数..
#/usr/local/qt5.12.2mips64 这个目录可自行修改
./configure -release -opensource -confirm-license -xplatform linux-mips64el-g++ -prefix /usr/local/qt5.12.2mips64 -no-opengl -silent -qpa linuxfb -nomake examples -nomake testsecho 编译开始
#根据自身CPU线程数修改12这个数
make -j12echo 开始安装
sudo make installecho 编译、安装完成
read -n 1

将脚本内容保存为文件,然后使用命令添加运行权限:chmod +x  脚本文件名

这样就可以双击运行了。

至于编译安装后,Qt Creator的配置还是去看这篇吧:QT5交叉编译保姆级教程(arm64、mips64)


http://www.ppmy.cn/server/107670.html

相关文章

39-nacos eureka zookeeper区别

Nacos, Eureka, Zookeeper都是服务发现和配置管理的工具&#xff0c;但是它们之间有一些区别&#xff1a; Nacos 设计目标是以更简单的方式来实现服务发现和配置管理。 支持服务发现和服务元数据的注册与发现。 支持DNS-based服务发现。 支持RPC和服务间调用。 支持配置的…

在 Spring Boot 中为 MyBatis 添加拦截器

在 Spring Boot 中为 MyBatis 添加拦截器以实现分表查询涉及几个步骤。以下是如何在 Spring Boot 应用中配置和使用 MyBatis 拦截器的指南&#xff0c;具体以分表查询为例&#xff1a; 创建拦截器 首先&#xff0c;定义一个自定义的 MyBatis 拦截器&#xff0c;实现 Intercept…

2024最新FL Studio24.1.1.4285破解版中文安装包百度云网盘下载地址

大家好&#xff0c;今天我要给大家介绍一款音乐制作神器——FL Studio 24.1.1.4285中文版。这款软件可是音乐制作界的翘楚&#xff0c;无论是专业人士还是音乐爱好者&#xff0c;都会为它的强大功能和易用性所折服。 我们来看看FL Studio的特点。 这是一款全能型的音乐工作站&…

Spring Cloud全解析:网关之GateWay断言

GateWay断言 断言Predicate gateWay网关中提供了多种断言方式 After断言 Loaded RoutePredicateFactory [After] After匹配在当前日期时间之后发生的请求 spring:cloud:gateway:routes:- id: after_routeuri: https://example.orgpredicates:- After2021-09-06T16:02:25.…

SpringBoot下获取resources目录下文件的常用方法

哈喽&#xff0c;大家好&#xff0c;今天给大家带来SpringBoot获取resources目录下文件的常用方法&#xff0c;示例中的方法是读取resources目录下的txt和xlsx文件&#xff0c;并将xlsx导出到excel的简单写法。完整代码放在最后。 通过this.getClass()方法获取 method1 - met…

Verilog刷题笔记60

题目&#xff1a; Exams/2013 q2bfsm Consider a finite state machine that is used to control some type of motor. The FSM has inputs x and y, which come from the motor, and produces outputs f and g, which control the motor. There is also a clock input called …

【YOLOv8改进[Conv]】 感受野注意力卷积RFAConv(2024.3)| 使用RFAConv改进C2f + 含全部代码和详细修改方式

本文将进行在YOLOv8中使用 感受野注意力卷积RFAConv改进C2f 的实践,助力YOLOv8目标检测效果,文中含全部代码、详细修改方式。助您轻松理解改进的方法。

C++练习题:进阶算法——二分查找

第一部分&#xff1a;考点与作答区 考点&#xff1a; 查找算法的概念二分查找的原理二分查找的实现 作答区&#xff1a; 编写一个C程序&#xff0c;完成以下要求&#xff1a; 使用二分查找算法在一个整型数组中查找一个元素。打印查找结果。 请在下方空白处编写代码&#…