应用移植 (二) QT编程
下载Qt源码http://download.qt.io/archive/qt/
ubuntu安装QT apt-get install cmake qt5-default qtcreator
下载编译好的QT for ARM :https://download.csdn.net/download/jerrygou/10662736
下载软件
下载以下软件包
1、交叉编译工具连
sudo apt-get install g++-arm-linux-gnueabi
sudo apt-get install gcc-arm-linux-gnueabi
2、tslib1.4.tar.gz
3、qt-everywhere-opensource-src-5.6.0-alpha.tar.gz
1、解压
tar zxvf qt-everywhere-opensource-src-5.6.0.tar
2、修改编译配置
gedit qt-everywhere-opensource-src-5.6.0/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
#一下内容具体含义请查看官方文档,我的板子是beaglebone black,所以arch=armv7-a mtune=cortex-a8
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv7-a -mtune=cortex-a8
QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv7-a -mtune=cortex-a8
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
#交叉编译工具链,自行修改成自己的,在命令行中输入#arm- 加tab键,打印出来的就是自己的工具链名字。
#后缀的-lts意思是加上ts库,也就是tslib库
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc -lts
QMAKE_CXX = arm-linux-gnueabi-g++ -lts
QMAKE_LINK = arm-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++ -lts
#同上
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy
QMAKE_NM = arm-linux-gnueabi-nm -P
QMAKE_STRIP = arm-linux-gnueabi-strip
load(qt_config)
#这个位置就是编译tslib时的prefix位置,自己设置
QMAKE_INCDIR=/root/code/tslib/tmp/include/
QMAKE_LIBDIR=/root/code/tslib/tmp/lib/
3、配置编译
mkdir -p ../Qt5.6
./configure -prefix /root/code/qt/Qt5.6 \
-opensource \
-release \
-confirm-license \
-xplatform linux-arm-gnueabi-g++ \
-shared \
-qt-zlib \
-no-gif \
-qt-libjpeg \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-dbus \
-no-rpath \
-no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
-no-avx \
-no-openssl \
-nomake tools \
-qreal float \
-qt-libpng \
-tslib \
-nomake examples \
-I /root/code/tslib/tmp/include \
-L /root/code/tslib/tmp/lib
make -j4
make install
如果使用的不是韦老大的虚拟机编译过程中可能报关于libxcb的错误,查看 qtbase/src/plugins/platforms/xcb 底下的 readme 安装相应的库就可以了。
4、将移植好的 qt 打包到开发板
cd ..
tar zcvf Qt5.6.tar.gz Qt5.6
cp Qt5.6.tar.gz /root/code/rootfs/usr/local/
tar zxvf Qt5.6.tar.gz
rm Qt5.6.tar.gz
rm -r doc include bin mkspecs qml translations
5、设置qt相关的环境变量
此部分可以参考qt官方问文档:http://doc.qt.io/qt-5/embedded-linux.html ,这我这仅仅是设置支持了触摸屏,你可以参考官方设置支持键盘,鼠标等等。
在文件系统 /etc/profile 里添加
export QTEDIR=/usr/local/Qt5.6
export LD_LIBRARY_PATH=/usr/local/Qt5.6/lib:$LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_FONTDIR=$QTEDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmSize=800x480:offset=0x0:tty=/dev/tty1
export QT_QPA_FB_TSLIB=1
或者:
#QT安装
#QT安装目录
export QPEDIR=/usr/local/QT4.5
export QTOPIA_DEPOT_PATH=$QPEDIR/bin
export QT_QPA_FONTDIR=$QPEDIR/lib/fonts
export QTDIR=$QPEDIR/bin
export DQTDIR=$QPEDIR/bin
export QMAKE=$QPEDIR/bin/qmake
export UIC=$QPEDIR/uic
export TMAKEDIR=$QPEDIR/bin
export TMAKEPATH=$QPEDIR/mkspecs/qws/linux-arm-g++
export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$QPEDIR/lib
export QWS_MOUSE_PROTO='TSLIB:/dev/input/event0'
export TSLIB_TSDEVICE='/dev/input/event0'
红色部分请根据自己的开发板进行修改,我手头的开发板是 7 寸 800x480 的 LCD,TQ210V4 用上面的参数即可。
此时,qt 已经移植完毕,你可以打包放入你的 nfs 目录启动进行测试了,至于制作 yaffs2 jffs2 等文件系统请参考:http://blog.csdn.net/lizuobin2/article/details/52589215 ,qt库比较大,烧录的时候可能比较困难,可以先将QT去除,打包成文件系统大约之后20M不到,烧录到开发板之后,启动内核,通过nfs tftp等工具,再将打包好的Qt传到板子上展开即可。
6、编译程序
在ubuntu中设置qmake的环境变量
export PATH=/usr/local/arm/QT4.5/__install/arm/bin:$PATH
qmake -v #查看版本
编译程序:
qmake -project
qmake -makefile
make
报错:
1、错误 make: arm-linux-gnueabi-g++: Command not found
Makefile:172: recipe for target 'tslib.o' failed
解决:apt install g++-arm-linux-gnueabi
2、
解决办法:
主机上交叉编译内核时,make menuconfig,在General setup ---> 【】 System V IPC处打上【*】
3、
解决:在/etc/profile文件中添加
export QT_QPA_FONTDIR=$QPEDIR/lib/fonts
然后 执行 source /etc/profile重新加载环境变量,如果解决不了,就在开发板下创建相应目录并添加相应文件
上一篇: Qt5(一)编写Qt多窗口程序