tslib和QT4移植文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
tslib和QT4移植⽂档
搭建嵌⼊式QT4开发环境
1、PC环境:
Vmware8.02
操作系统为:ubuntu12.04;
Gcc 版本是:4.6.3;
交叉⼯具链是4.4.6 版本。
2、ubuntu下的QT4开发环境搭建:
开发QT4 应⽤程序需要安装qt4库、头⽂件和qt开发⼯具(qmake、uic、moc等)。
基于ubuntu平台的QT4开发环境搭建⽅式⼀般有3种:
(1)使⽤apt-get install XXX从ubuntu源服务器安装qt4开发⼯具:
笔者即采⽤了这种⽅式
sudo apt-get install libqt4-dev
sudo apt-get install qt4-dev-tools qt4-designer qt4-doc qt4-qtconfig qt4-demos \
qt4-qmake libqt4-sql-mysql qdevelop
sudo apt-get install qtcreator
Ubuntu源服务器上提供的qt4的开发库和⼯具,可以⾃新⽴得软件管理器上搜索
qt4的库和开发⼯具,选择安装。
(2)使⽤sdk开发⼯具包安装
Qt从4.5版本之后提供了SDK安装包,可以从ftp:///doc/423945792.html
/qtsdk/下载SDK
安装包,SDK安装包就包括qt4开发所需要的动态库、头⽂件和开发⼯具。
其中还
提供了qtcreatr集成开发环境,qtcreator是⼀个集开发、调试于⼀体的图像化的开
发环境。
如:qt-sdk-linux-x86-opensource-2009.04.1.bin。
在终端上执⾏上⾯这个⽂件,会弹出安装导向对话框,根据对话框的提⽰安装即可。
(3)从源码编译安装
从“ftp:///doc/423945792.html
/qt/source/”下载qt-x11的源码,如
下载qt-x11-opensource-src-4.5.3.tar.gz;
3、交叉编译qt-embedded
3.1安装tslib
Tslib是⼀个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应⽤提供了⼀个统⼀的接⼝。
可以通过以下⽅式获取tslib源码。
git clone https:///doc/423945792.html
/kergoth/tslib
安装tslib的步骤如下所⽰:
$ ./autogen.sh (⽣成configure⽂件)
$ echo "ac_cv_func_malloc_0_nonnull=yes"> tmp.cache
$ ./configure --host=arm-linux --cache-file=tmp.cache --enable-inputapi=no \
--prefix=/home/tarena/QT/built-tslib
$ make
$ make install
3.2编译qt-embedded
可通过以下地址下载4.8.4版QT源码。
/doc/423945792.html
/developer/download/qt-everywhere-commercial-src-4.8.4.tar.gz 安装步骤如下所⽰: 1)修改mkspecs/qws/linux-arm-g++/qmake.conf
QMAKE_CC = arm-linux-gcc -lts
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts
2)./configure \
-prefix /home/tarena/QT/build-qt -release -shared -fast -no-pch \
-no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng \
-qt-libjpeg -qt-zlib -qt-libpng -qt-freetype \
-no-openssl -nomake examples -nomake demos -nomake tools \
-no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes\
-no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -no-qvfb -qt-mouse-tslib \
-qt-kbd-linuxinput \
-I /home/tarena/QT/build-tslib/include \
-L /home/tarena/QT/build-tslib/lib \
-no-separate-debug-info \
-optimized-qmake -confirm-license \
-depths all -qt-gfx-linuxfb -feature-QWS_CURSOR \
-xplatform qws/linux-arm-g++ -embedded arm \
-no-armfpa
3)make
4)make install
3.3测试qt- embedded
1)配置tslib与qt embedded
修改或创建/opt/rootfs/etc/下的profile⽂件(如果不存在则创建)。
添加如下内容:
#tslib setting
export QTDIR=/home/tarena/QT/build-qt
export TSLIBDIR=/home/tarena/QT/built-tslib
echo "tslib setting"
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=$ TSLIBDIR /etc/pointercal
export TSLIB_CONFFILE=$ TSLIBDIR /etc/ts.conf
export TSLIB_PLUGINDIR=$ TSLIBDIR /lib/ts
#qt-embedded-4 setting
echo "qt-embedded-4 setting"
export QWS_SIZE=800x480
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export LD_LIBRARY_PA TH=$QTDIR/lib:$TSLIBDIR/lib:$LD_LIBRARY_PATH 2)修改/home/tarena/QT/built-tslib/etc/ts.conf⽂件
在module pthres pmin=1前⼀⾏添加
module_raw input
改完后的⽂件如下所⽰:
# Uncomment if you wish to use the linux input layer event interface
# module_raw input
# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
# module_raw collie
# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
# module_raw corgi
# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface # module_raw ucb1x00
# Uncomment if you're using an HP iPaq h3600 or similar
# module_raw h3600
# Uncomment if you're using a Hitachi Webpad
# module_raw mk712
# Uncomment if you're using an IBM Arctic II
# module_raw arctic2
module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear
需要注意的是最后module开头的⼏⾏前⾯不能有空格.
3)在开发板上建⽴⽬录
Mkdir –p /home/tarena/QT/build-qt
Mkdir –p /home/tarena/QT/build-tslib
将PC机/home/tarena/QT/build-qt⽂件夹和/home/tarena/QT/build-tslib⽂件夹中的内容拷贝到根⽂件系统中对应的⽬录(没有则创建)
4、测试tslib,完成屏幕校准
运⾏build-tslib/bin/ts_calibrate,若出现以下问题
“tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Y events)”
则查看/dev/⽬录下的eventX⽂件,确定哪个是触摸屏对应的设备⽂件(可采⽤逐个实验法),并修改profile⽂件中的export TSLIB_TSDEVICE=/dev/eventX,通过source执⾏该profile脚本⽂件,使变量⽣效后重新执⾏ts_calibrate,查看触摸屏屏幕的变化。
5、测试qt-embedded程序是否能正常运⾏。
可以⾃⼰编译qt-embedded的examples⽬录下的例⼦。
也可以⽤已经编译好的例⼦测试。
本例⼦使⽤standarddialogs测试。
编译standarddialogs的过程如下:
进⼊⽬录qt-embedded-linux-opensource-src-4.8.4/examples/dialogs/standarddialogs下执⾏如下命令:
$ /home/tarena/QT/build-qt /bin/qmake -project
$ /home/tarena/QT/build-qt /bin/qmake
$ make
$ ls
或者
sudo vi /usr/share/qt4/mkspecs/qws/linux-arm-g++/qmake.conf
QMAKE_INCDIR_QT = /home/tarena/ehome/qtlib/build-qt/include
QMAKE_LIBDIR_QT=/home/tarena/ehome/qtlib/build-qt/lib /home/tarena/ehome/qtlib/build-tslib/lib
qmake -spec /usr/share/qt4/mkspecs/qws/linux-arm-g++/ xxx.pro(⼯程⽂件)
make
将standarddialogs复制到开发板的/tmp⽬录下。
$sudo cp standarddialogs /opt/rootfs/tmp
然后在开发板上使⽤如下命令,运⾏standarddialogs程序。
/tmp/standarddialogs -qws
汉字显⽰问题:
在qt默认的字库中,只有unifont_160_50.qpf⽀持中⽂,你把这个⽂件拷到运⾏系统的字库⽬录下,
启动程序加⼀下参数:
./yourApp -font unifont
或者
#include
QTextCodec::setCodecForLocale(QTextCodec::
codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::
codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
vim /opt/rootfs/etc/profile最后添加⼀句话:
export LC_TIME="zh_CN.UTF-8"
ctrl + c 结束进程可以在启动进程时使⽤–nokeyboard选项或者export QWS_KEYBOARD=None。