当前位置: 首页 > article >正文

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

前言

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

一开始想使用深度最新的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 ];then
  echo 存在源码目录,删除中..
  sudo rm -rf $qtDir
fi

#重新解压源码
if [ -f  ];then
  echo 开始解压..
#请自行修改/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

echo 配置编译参数..
#/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 tests

echo 编译开始
#根据自身CPU线程数修改12这个数
make -j12

echo 开始安装
sudo make install

echo 编译、安装完成
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 ];then
  echo 存在源码目录,删除中..
  sudo rm -rf $qtDir
fi

#重新解压源码
if [ -f  ];then
  echo 开始解压..
#请自行修改/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.conf

echo 配置编译参数..
#/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 tests

echo 编译开始
#根据自身CPU线程数修改12这个数
make -j12

echo 开始安装
sudo make install

echo 编译、安装完成
read -n 1

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

这样就可以双击运行了。

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


http://www.kler.cn/a/287647.html

相关文章:

  • Restful API接⼝简介及为什么要进⾏接⼝压测
  • 问题分析与解决:Android开机卡动画问题分析
  • MySQL中将一个字符串字段按层级树状展开
  • 正则表达式语法详解(python)
  • 【计算机网络】协议定制
  • 27.<Spring博客系统③(实现用户退出登录接口+发布博客+删除/编辑博客)>
  • Laravel邮件发送功能的实现的方法和技巧?
  • 【HTML】模拟消息折叠效果【附源代码】
  • 云计算day37
  • 解决Linux安装epel源提示没有可用安装包
  • 访问Neo4j验证失败(The client is unauthorized due to authentication failure.)
  • 缓存使用-缓存击穿、穿透、雪崩概念
  • 数据仓库系列13:增量更新和全量更新有什么区别,如何选择?
  • 基于单片机的自动浇花控制写设计任务书
  • python语言基础(六)--深浅拷贝、闭包与装饰器
  • element-plus 报错 ResizeObserver loop limit exceeded 解决
  • 线性代数 第五讲:线性方程组_齐次线性方程组_非齐次线性方程组_公共解同解方程组_详解
  • 建模杂谈系列254 GMM的拟合
  • 深度学习模板方法设计模式
  • OZON收纳产品,OZON热卖收纳产品
  • 视频结构化从入门到精通——视频结构化主要技术介绍
  • k8s安装test
  • 线上剧本杀小程序,线上游戏新体验
  • 【国外比较权威的免费的卫星数据网站——DigitalGlobe Open Data Program】
  • RocketMQ 实战:在 macOS 上安装与前端访问全流程指南
  • nginx 部署前端vue项目