Qt是跨平台的应用程序和UI框架,它包括跨平台类库、集成开发工具和跨平台IDE。使用Qt只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。
1. Qt编译
从Qt官网下载最新的Qt5.8源码,可以在源码包中查看README文件等,确定编译、安装的步骤。
从README文件可以知道编译Qt5.8要求主机端编译器以及交叉编译器支持c++11的标准。而只有g++ 4.8以上的版本才完整支持c++11,在编译Qt5.8之前,需保证主机端编译器和交叉编译器已经更新或安装了g++ 4.8以上的版本。
在/qtbase/mkspecs/linux-arm-gnueabi-g++目录下,需要修改qmake.conf文件,加入下面选项,并修改相应的交叉编译工具。
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE +=-O2-march=armv5te
QMAKE_CXXFLAGS_RELEASE +=-O2 -march=armv5te
#modifications to g++.conf
QMAKE_CC = arm-linux-gcc
QMAKE_CXX = arm-linux-g++
QMAKE_LINK = arm-linux-g++
QMAKE_LINK_SHLIB = arm-linux-g++
#modifications to linux.conf
QMAKE_AR = arm-linux-ar cqs
QMAKE_OBJCOPY = arm-linux-objcopy
QMAKE_NM = arm-linux-nm -P
QMAKE_STRIP = arm-linux-gnueabi-strip
/qtdeclarative/examples/quick/quick.pro,注释掉qtHaveModule(quickwidgets):SUBDIRS += quickwidgets, quickwidgets例程需要opengl的支持,这个例程会编译失败。
# qtHaveModule(quickwidgets): SUBDIRS +=quickwidgets
./configure –h查看配置选项,Qt5.8自身支持触摸屏,可以无需其它的触摸屏库(如tslib)。
./configure-prefix /usr/Qt5.8 -confirm-license -opensource -release -make libs -xplatformlinux-arm-gnueabi-g++ -optimized-qmake -pch -qt-libjpeg -qt-libpng -qt-zlib-no-opengl -no-sse2 -no-openssl -no-cups -no-glib -no-dbus -no-xcb -no-xrender-no-separate-debug-info -make examples -nomake tools -nomake tests -no-iconv
make –j4 #根据机器配置,编译需一个多小时。
make install #安装Qt,在/usr/Qt5.8目录下有相应的examples、lib、plugins等目录。
2. 环境变量
把Qt5.8安装目录下examples、lib、plugins目录拷贝到板端/usr/Qt5.8。使用Qt,系统必须知道Qt的位置,配置等等,在/etc/profile文件中加入Qt的环境变量。
QTDIR=/usr/qt5.8
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
:size=800x480:mmSize=800x480:offset=0x0
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
export LD_LIBRARY_PATH
3. 测试
板端启动系统,进入/usr/Qt5.8目录,运行Qt测试代码。
/usr/Qt5.8/examples/touch/pinchzoom # ./pinchzoom
/usr/Qt5.8/examples/svg/embedded/fluidlauncher # ./fluidlauncher