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