交叉编译qt5.11.3源码(不带opengl)

738 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、环境:

PC操作系统:Ubuntu 18.04.6 gcc 版本:gcc-arm-linux-gnueabihf-8.3.0

二、下载软件包

1、tslib-1.21: github.com/libts/tslib… Tslib用于访问触摸屏设备,以防操作系统不提供驱动程序支持。 它也可能只用于优化触摸用户体验,通过应用任何数字或顺序的数学过滤器。 libts库具有高度可配置性和可移植性。 Tslib包括校准、测试和使用库的工具。 它非常适合于嵌入式设备,并在许多商业产品中使用。 Tslib包含了如何使用它的文档。(官网解释翻译) 2、alsa-lib-1.2.2: www.alsa-project.org/files/pub/l… ALSA -lib包含开发人员用来编译ALSA应用程序的用户空间库。(官网解释翻译)

三、第三方库交叉编译

先把交叉编译工具的bin目录配置到环境变量。

export PATH=/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/:$PATH

1、tslib-1.21

configure配置:

../configure CC=/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc --prefix=/opt/tslib-1.21 --host=arm-linux-gnueabihf

注:CC一定要使用绝对路径。

2、alsa-lib-1.2.2

configure配置:

../configure CC=/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc --prefix=/opt/alsa-lib-1.2.2 --host=arm-linux-gnueabihf

四、依赖库安装

   sudo apt install g++ make qt3d5-dev-tools -y
   sudo apt install qml-module-qtquick-xmllistmodel -y
   sudo apt install qml-module-qtquick-virtualkeyboard qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs qml -y
   sudo apt install libqt53dquickscene2d5 libqt53dquickrender5 libqt53dquickinput5 libqt53dquickextras5 libqt53dquickanimation5 libqt53dquick5 -y
   sudo apt install qtdeclarative5-dev qml-module-qtwebengine qml-module-qtwebchannel qml-module-qtmultimedia qml-module-qtaudioengine -y

五、QT交叉编译(不带opengl)

1、修改qmake配置

(1)模板拷贝

模板路径: qt-everywhere-src-5.11.3/qtbase/mkspecs/linux-arm-gnueabi-g++ 可以将**linux-arm-gnueabi-g++**目录在同级目录下复制一份,然后再修改。 在这里插入图片描述

(2)qmake.conf修改

路径: qt-everywhere-src-5.11.3/qtbase/mkspecs/linux-arm-gnueabi-g++_imx6/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)

# modifications to g++.conf
#交叉编译工具
QMAKE_CC                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX               = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK              = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB        = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-g++ -lts

# modifications to linux.conf
#交叉编译工具
QMAKE_AR                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM                = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = /opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf-strip
load(qt_config)

#tslib路径(交叉编译库)
QMAKE_INCDIR=/opt/tslib-1.21/include
QMAKE_LIBDIR=/opt/tslib-1.21/lib

2、configure配置脚本文件

#!/bin/sh
../configure \
-prefix /opt/qt-5.11.3_imx6_noopengl \
-xplatform linux-arm-gnueabi-g++_imx6 \
-release \
-opensource \
-confirm-license \
-no-openssl \
-no-opengl \
-no-xcb \
-no-eglfs \
-no-compile-examples \
-no-pkg-config \
-skip qtsensors \
-skip qtdoc \
-skip qtwayland \
-skip qt3d \
-skip qtcanvas3d \
-skip qtpurchasing \
-skip qtdeclarative \
-no-iconv \
-no-glib \
-tslib \
-I/opt/tslib-1.21/include \
-L/opt/tslib-1.21/lib \
-alsa \
-I/opt/alsa-lib-1.2.2/include \
-L/opt/alsa-lib-1.2.2/lib \

说明:

  • -xplatform:指向上一步mkspecs目录下拷贝出来的文件夹名
  • -tslib:启用tslib,并指向已经交叉编译出来的库和头文件目录
  • -alsa:启用alsa,并指向已经交叉编译出来的库和头文件目录

3、编译、安装

make
make install

4、编译结果

在这里插入图片描述