一键编译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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

skyyx2002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值