使用arm开发板提供的交叉编译链,编译Qt5.12.8

1. 下载qt

https://download.qt.io/archive/qt/5.12/5.12.8/single/qt-everywhere-src-5.12.8.tar.xz

2. 交叉编译链

开发板提供: gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz

  1. 解压文件
tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.gz 
  1. 设置环境变量
vim /etc/profile

在文件末尾添加

export PATH=/build-arm-qt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH
  1. 配置生效
source /etc/profile

3. 交叉编译 libts

  1. 下载libts源码: https://github.com/kergoth/tslib.git
  2. 创建libts安装目录
mkdir -p /usr/local/tslib
  1. 进入目录,执行
  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
  1. 如果报错,安装: sudo apt-get install autoconf automake libtool
  2. 编译
make -j4
make install

4.交叉编译Qt

  1. 创建qt安装目录
mkdir /arm-qt5.12.8
  1. 解压源码,进入目录
tar -xvf qt-everywhere-src-5.12.8.tar.xz
cd qt-everywhere-src-5.12.8
  1. 配置 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)
  1. 在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 \
  1. 添加执行权限,执行 脚本
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

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值