ubuntu搭建qt的arm交叉编译环境

搭建交叉编译环境前应安装qt和交叉编译工具,编译环境使用的源码应与安装的qt版本对应

交叉编译工具下载地址:Linaro Releases

下载解压后修改文件/etc/profile,添加交叉编译工具路径

ubuntu搭建qt的arm交叉编译环境_第1张图片

 

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模块编译错误

ubuntu搭建qt的arm交叉编译环境_第2张图片

 

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博客

你可能感兴趣的:(qt,ubuntu,开发语言)