搭建交叉编译环境前应安装qt和交叉编译工具,编译环境使用的源码应与安装的qt版本对应
交叉编译工具下载地址:Linaro Releases
下载解压后修改文件/etc/profile,添加交叉编译工具路径
1.下载qt源码,本文使用qt-everywhere-src-5.14.1.tar.xz
下载地址:Index of /archive/qt/5.14/5.14.1/single
2.编写config脚本,新建文件autoconfigure.sh,输入以下内容,此时未包含tslib和sqlite,可在后续使用时再添加。
#!/bin/sh
./configure \
-prefix /home/zzz/Downloads/qt-everywhere-src-5.14.1/arm-qt \
-confirm-license \
-opensource \
-shared \
-release \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-skip qtdeclarative \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info \
-no-fontconfig \
-nomake examples -nomake tools -nomake tests -no-iconv
exit
3.修改文件qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
修改为如下内容,具体路径以实际文件路径为准
#
# qmake configuration for building with arm-linux-gnueabi-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)
#20220703 song
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
# modifications to g++.conf
QMAKE_CC = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
QMAKE_CXX = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
QMAKE_LINK = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP = /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip
QMAKE_INCDIR += /home/work/third-party/tslib/arm-tslib/include
QMAKE_LIBDIR += /home/work/third-party/tslib/arm-tslib/lib
load(qt_config)
QMAKE_INCDIR += /home/work/third-party/tslib/arm-tslib/include
QMAKE_LIBDIR += /home/work/third-party/tslib/arm-tslib/lib
上述两行为指定tslib路径,可不添加
4.源码中的部分文件可能由于环境问题,编译时出现错误,因此需修改部分文件
gedit qtbase/src/corelib/global/qfloat16.h
//在头文件中添加如下
#include
#include
//保存后退出
gedit qtbase/src/corelib/text/qbytearraymatcher.h
//在头文件中添加如下
#include
//保存后退出
5.安装其他依赖文件
//qtserialport的依赖项,若不安装则在编译该模块时出错
sudo apt-get install libqt5serialport5-dev libudev-dev
//qtwebengine的依赖项,若不安装则不会编译该模块,后续将无法使用
sudo apt-get install gpref
依赖缺失可能出现的qserialport模块编译错误
6.开始编译,依次执行如下指令
sudo ./autoconfigure.sh
sudo gmake -j4
sudo gmake install
//理论上在执行此三条语句时,可以将gmake替换为make,但是笔者configure后提示的就是使用gmake,故此处写为gmake
//第二步执行gmake时,开启多核编译有可能出现由于多核通信导致的一些意想不到的错误,或有可能忽略一些编译时的错误,这些被忽略的错误会在第三步install时提示,因此在时间充足的情况下推荐不推荐使用多核编译
7.在qt中添加arm-linux-gnueabihf-gcc和arm-linux-gnueabihf-g++等组件,并添加qmake参考文章
ubuntu搭建qt交叉编译环境_qt交叉编译环境搭建_²º²²এ松的博客-CSDN博客
参考文章:
1.ubuntu搭建qt交叉编译环境_qt交叉编译环境搭建_²º²²এ松的博客-CSDN博客
2.c++-‘numeric_limits’ is not a member of ‘std’ - 糯米PHP
3.armlinux 移植qt_arm 移植好的qt_²º²²এ松的博客-CSDN博客
4.qt/e5.6.0 ubuntu16.04 make问题_思行-J的博客-CSDN博客
5.QT 5.14.0 安装指南_Home_8181的博客-CSDN博客
5.交叉编译QT5.7.0源码生成qmake工具_project error: building qtqml requires python._雅典没有娜的博客-CSDN博客