Qt 5.12 源代码下载以及配置
从下面地址下载并解压 Qt 5.12 开源版最新源代码 tar.xz 压缩包,本文选择Qt版本是 5.12.10
Index of /archive/qt/5.12
$ wget https://download.qt.io/archive/qt/5.12/5.12.10/single/qt-everywhere-src-5.12.10.tar.xz
$ tar -xvf qt-everywhere-src-5.12.10.tar.xz
$ cd qt-everywhere-src-5.12.10
配置文件
首先,因为是交叉编译,因此要使用 qtbase/mkspecs/devices/ 目录下的嵌入式设备对应的 qmake 配置文件,不过由于预置的针对 NXP iMX6 的 linux-imx6-g++ 对应的 qmake.conf 默认是针对 eglfs 文件系统的,而本文测试使用是基于 X11 显示的,因此需要做相应修改。
qtbase/mkspecs/devices/linux-imx6-g++/qmake.conf 修改为如下:
include(../common/linux_device_pre.conf)
QMAKE_LIBS_EGL += -lEGL
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL
#IMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
IMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -mthumb
QMAKE_CFLAGS += $$IMX6_CFLAGS
QMAKE_CXXFLAGS += $$IMX6_CFLAGS
DISTRO_OPTS += hard-float
# Preferred eglfs backend
#EGLFS_DEVICE_INTEGRATION = eglfs_viv
include(../common/linux_arm_device_post.conf)
QMAKE_CFLAGS_ISYSTEM =
load(qt_config)
然后创建 configure 配置文件 config.sh 如下,主要用于coonfigure 配置参数设置,选定 xcb(X11)支持等,也可以通过 -skip-<qtmodule> 来忽略编译某些qt模块,本文默认编译全部。
./configure -confirm-license \
-prefix /usr/local/Trolltech/Qt-5.12.10.opengl-arm/ -release -opensource \
-sysroot /opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi \
-qt-libjpeg -qt-libpng \
-qt-zlib -skip qt3d -skip qtcanvas3d -skip qtpurchasing \
-no-sse2 -no-cups -no-glib -no-iconv \
-nomake examples -nomake tools -skip qtvirtualkeyboard \
-xcb -xcb-xlib -qpa xcb \
-opengl es2 -opengles3 -egl -eglfs \
-device linux-imx6-g++ \
-device-option CROSS_COMPILE=/opt/fsl-imx-x11/4.9.88-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \
-qpa imx6 -eglfs
Qt 5.12 源代码交叉编译
执行文件
$ ./ config.sh
Configure成功后,会打印罗列要编译的相关组件,可以再次确认下是否符合要求
执行 make 进行编译,由于完整编译需要时间比较长,可以先尝试单独编译qtbase组件,如果编译成功再进行完整编译以提高效率$ make -j8
make 成功没有错误后,再执行 make install 进行安装,安装目录通过上面 config.sh 脚本 -prefix 参数定义,比如本文则位于 /usr/local/Trolltech/Qt-5.12.10.opengl-arm$ make install
Qt 5.12 部署测试
安装成功后,将 Qt 编译输出目录打包上传以便在i.MX6 Arm开发板系统中部署测试
修改ARM中/etc/profile文件中关于QT的配置:
$ vi /etc/profile
# set up QT enviroment
export QTDIR=/usr/local/Trolltech/Qt-5.12.10.opengl-arm
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=eglfs
export QT_QPA_FONTDIR=/usr/share/fonts/truetype/
export QML2_IMPORT_PATH=$QTDIR/qml
export QT_QPA_EGLFS_INTEGRATION=eglfs_x11
export QT_QPA_EGLFS_PHYSICAL_WIDTH=1024
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=768
export DISPLAY=:0.0
export QT_DEBUG_PLUGINS=0
$ source /etc/profile
运行测试程序:
$ cd /work/
$ ./openglwindow
显示QT界面