1. 下载qt
2. 交叉编译链
开发板提供: gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz
- 解压文件
tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz
- 设置环境变量
vim /etc/profile
在文件末尾添加
export PATH=/build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH
- 配置生效
source /etc/profile
3. 交叉编译 libts
- 下载libts源码: https://github.com/kergoth/tslib.git
- 创建libts安装目录
mkdir -p /usr/local/tslib
- 进入目录,执行
cd ./tslib
./autogen.sh
./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=/build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc CXX=/build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++ -prefix=/usr/local/tslib
- 如果报错,安装:
sudo apt-get install autoconf automake libtool
- 编译
make -j4
make install
4.交叉编译Qt
- 创建qt安装目录
mkdir /arm-qt5.12.8
- 解压源码,进入目录
tar -xvf qt-everywhere-src-5.12.8.tar.xz
cd qt-everywhere-src-5.12.8
- 配置 qt-everywhere-src-5.12.8/qtbase/mkspecs/aarch64-none-linux-gnu-g++/qmake.conf文件
- qt-everywhere-src-5.12.8/qtbase/mkspecs/aarch64-none-linux-gnu-g++目录根据交叉编译链进行配置,如果没有此目录可复制其它默认目录并重命名:
cp -r ./qtbase/mkspecs/linux-aarch64-gnu-g++/ ./qtbase/mkspecs/aarch64-none-linux-gnu-g++
- 编译qmkae.conf文件
#
# qmake configuration for building with aarch64-none-linux-gnu-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 = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc -lts
QMAKE_CXX = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++ -lts
QMAKE_LINK = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++ -lts
QMAKE_LINK_SHLIB = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++ -lts
# modifications to linux.conf
QMAKE_AR = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-objcopy
QMAKE_NM = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-nm -P
QMAKE_STRIP = /build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-strip
load(qt_config)
- 在qt-everywhere-src-5.12.8目录中创建autoConfig.sh文件
cd qt-everywhere-src-5.12.8
vim autoConfigure.sh
- 文件内容
./configure -prefix /arm-qt5.12.8 \
-opensource \
-release \
-confirm-license \
-xplatform aarch64-none-linux-gnu-g++ \
-shared \
-verbose \
-qt-zlib \
-pkg-config \
-no-opengl \
-no-gif \
-no-pkg-config \
-no-cups \
-no-dbus \
-no-rpath \
-no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
-no-avx \
-no-openssl \
-skip qtdeclarative \
-skip qtserialbus \
-skip qtwebchannel \
-skip qtlocation \
-nomake tools \
-qreal float \
-qt-libpng \
-tslib \
-make examples \
-I /usr/local/tslib/include \
-L /usr/local/tslib/lib \
- 添加执行权限,执行 脚本
chmod +x autoConfig.sh
./autoConfig.sh
- 可能报错:/qtbase/include/QtCore/…/…/src/corelib/global/qendian.h:333:35: error: ‘numeric_limits’ is not a member of ‘std’
333 | { return QSpecialInteger(std::numeric_limits::min());
解决:
#include <limits>
成功:
6. 编译,构建
make -j4
make install
配置Qt Creator