Qt 4.5.1触摸屏和Sqlite 3 移植教程 下篇

移动开发
接着上篇Qt 4.5.1触摸屏和Sqlite 3 移植教程开始介绍,基于平台的Qt嵌入式,它是一个控制程序存储在ROM中的嵌入式处理器控制板。

接着介绍Qt 4.5.1触摸屏和Sqlite 3 移植教程,开始编译。

Qt 4.5.1触摸屏和Sqlite 3 移植教程 上篇

qt-x11-opensource-src-4.5.1就编译安装成功了。,你就可以使用/usr/local/Trolltech/Qt-4.5.1下的Qt进行编程开发了。

1、这里,qt-embedded有两个复制:qt-embedded-linux-opensource-src-4.5.1-x86和qt-embedded-linux-opensource-src-4.5.1-arm,根据他们的名字可以知道前者是适合x86架构的,后者适合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑(这里咱们用的PC机其实是也可以看成嵌入式开发板只不过它是x86架构的)。

前面说过,我们需要qvfb来开发,但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。而将qt-embedded编译成arm,又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddedd的arm库再次编译就可以得到在arm上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm架构的。

2、编译配置QtEmbedded-4.5.1-x86版本

解压qt-embedded-linux-opensource-src-4.5.1.tar.bz2在路径/root/local/qt路径下

  1. # tar xjvf qt-embedded-linux-opensource-src-4.5.1.tar.bz2 

修改解压后的文件夹名称

  1. #mv qt-embedded-linux-opensource-src-4.5.1 qt-embedded-linux-opensource-src-4.5.1-x86  
  2. 进入/root/local/qt/qt-x11-opensource-src-4.5.1-x86目录,进行编译安装。在终端中进行如下操作:  
  3. #cd /root/local/qt/qt-x11-opensource-src-4.5.1-x86  
  4. ./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.1-x86 -embedded x86 –qvfb  
  5. #make(或windowns系统下gmake)  
  6. #make install(或gmake install) 

OK,QtEmbedded-4.5.1-x86就编译好了。

在需要x86版本QT编译时建立环境变量:

  1. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/  
  2. export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/bin/:$PATH  
  3. export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.21-x86/lib/:$LD_LIBRARY_PATH 

这里也写成脚本:

  1. #vi setX86env  
  2. #!/bin/sh  
  3. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/  
  4. export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/bin:$PATH  
  5. 4export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-x86/lib/:$LD_LI    BRARY_PATH 

记得加上执行权限。

如果要添加触摸屏支持还需要安装tslib,现在最高版本为1.4(笔者开发时)。下面介绍一下tslib1.4编译安装过程。

3、编译安装tslib1.4

安装编译过程需用到的程序

  1. # apt-get install autoconf(或autoconf2.13)  
  2. # apt-get install automake  
  3. # apt-get install libtool 

将tslib1.4解压到/home下

  1. #./autogen.sh  
  2. #./configure --prefix=/home/zyx/project/mytslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes 
  3.  
  4. #make  
  5. #make install-strip //生成瘦身应用程序和库 

注意:/home/zyx/project/mytslib/为tslib1.4安装目录在装QtEmbedded-4.5.1-arm版本时需要用到此目录,打包mytslib。

  1. # tar czvf mytslib.tar.gz mytslib 

下载到开发板上/usr/local目录解压。

  1. #tar xzvf mytslib.tar.gz 

设置环境变量,校准触摸屏。修改开发板上创建/bin/ts.sh文件。

 

  1. #!/bin/sh  
  2. export QTDIR=/usr/local/Qtembedded-4.5.1  
  3. export QPEDIR=/usr/local/Qtembedded-4.5.1  
  4. export PATH=$PATH:$QTDIR/bin  
  5. export TSLIB_ROOT=/usr/local/tslib     //tslib主目录  
  6. export TSLIB_TSDEVICE=/dev/event0   //触摸屏设备节点  
  7. export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf   //触摸屏配置文件  
  8. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts //触摸屏在进行AD转换时用到的插件  
  9. export TSLIB_CALIBFILE=/etc/pointercal     //生成的校验文件存放目录  
  10. export TSLIB_FBDEVICE=/dev/fb0         //触摸屏framebuff设备节点  
  11. export QWS_SIZE=640x480   //根据自己触摸屏大小进行设置,这条也可不加  
  12. export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"//如果不加这条会出现触摸屏字体很小的现象(不管在程序中设置多大的字体)  
  13. export LD_LIBRARY_PATH=$QPEDIR/lib:$TSLIB_ROOT/lib:$LD_LIBRARY_PATH  
  14. export QWS_MOUSE_PROTO="Tslib:/dev/event0" 
  15. export TSLIB_CONSOLEDEVICE=none 
  16. export QT_QWS_FONTDIR=$QPEDIR/lib/fonts  //设置字体,否则程序显示乱码  
  17. export QT_PLUGIN_PATH=$QTDIR/plugins/  

#p#

注意:

(1) 上面这些设置一定要仔细写,否则会出现这样那样的问题,笔者曾出现露掉字体问题。总之这个一定要根据自己的配置写正确。

(2) 检查ts.conf 参数是否设置正确,下面是我的配置。

  1. module_raw input  
  2. module pthres pmin=1 
  3. module variance delta=30 
  4. module dejitter delta=100 
  5. module linear 

(3) 如果是静态添加节点的话,触摸屏设备节点一定要建正确。

  1. #mknod ts0 c 13 128 

(4) 触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.你可以测试有没有加载触摸屏驱动,cat /dev/touchscreen/0raw) ,点击触摸屏,看终端有无显示,若有则表明正确。

(5) 修改文件ts.conf将其他不需要的都删掉,空格也都删掉,因为配置文件有大小限制(好像是不大于150k)。否则有可能会提示: selected device is not a touchscreen I understand错误信息

在开发板/usr/local/mytslib/bin目录下执行校准触摸屏程序:# ./ts_calibrate

会在/etc目录生成一个:pointercal触摸屏效准的必须文件,也可以运行此目录下的其他程序进行测试。

特别注意:如果是挂载根文件系统,在/etc/exports文件中发布权限要设置正确,否则可能会出现虽然已经校验但却无法生成pointercal文件。

4、编译安装QtEmbedded-4.5.1-arm版本

解压qt-embedded-linux-opensource-src-4.5.1.tar.bz2(在路径/root/local/qt路径下),进入/root/local/qt/ qt-embedded-linux-opensource-src-4.5.1-arm目录,进行编译安装。在终端中进行如下操作:

  1. # tar xjvf qt-embedded-linux-opensource-src-4.5.1.tar.bz2  
  2. #mv qt-embedded-linux-opensource-src-4.5.1 qt-embedded-linux-opensource-src-4.5.1-arm  
  3. # cd qt-embedded-linux-opensource-src-4.5.1-arm 

配置选项编译:

  1. ./configure -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2   
  2. -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs 
  3. -nomake tools -nomake examples -nomake docs -nomake demo -no-nis  
  4.  -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb   
  5. -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc   
  6. -no-gfx-qvfb -qt-kbd-usb   
  7. -no-glib -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib 

解释:-fast:快速编译,加此项不会生成中间文件,如果你确定你能一次编译通过的话可以加上,否则重新编译会浪费很多时间。

-qt-sql-sqlite:sqlite数据库选项,如果要编写的程序需要数据库就必须加上,或者使用插件的形式,但是两者只能选一个,否则编写的程序会出现加载不上驱动的现象。

注意:最后两个路径如果设置不对则生成的库文件没办法支持触摸屏

假如提示mkspec/qws/linux-arm-g++/qmake.conf中QMAKE_INCDIR和QMAKE_LIBDIR错误信息

将qmake.conf文件中加入

  1. QMAKE_INCDIR =/home/zyx/project/mytslib/include  
  2. QMAKE_LIBDIR =/home/zyx/project/mytslib/lib 

重新./configure

  1. #make  
  2. #make install 

如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。

安装默认目录在/usr/local/Trolltech/QtEmbedded-4.5.1-arm中。

5、打包编译安装好的QtEmbedded库文件以备以后使用

  1. # tar czvf QtEmbedded-4.5.1-arm.tar.gz QtEmbedded-4.5.1-arm 

在编译ARM版QT应用程序前建立环境变量:

  1. export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.1-arm/  
  2. export PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-arm/bin/:$PATH  
  3. export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib/:$  
  4. LD_LIBRARY_PATH 

编译简单的QT程序或者QtEmbedded-4.5.1-arm自带的程序例子挂载到开发板执行看是否成功,一般会提示找不到fonts  libQtGui.so.4  libstdc++.so.6  libQtNetwork.so.4 libQtCore.so.4 librt.so.1等库文件。从/usr/local/trolltech/QtEmbedded-4.5.2-arm/lib 和 /usr/local/arm/3.4.5/arm-linux/lib中拷贝到开发板上即可。

小结:关于Qt 4.5.1触摸屏和Sqlite 3 移植教程 上下篇介绍完了,还是基于Qt 嵌入式版本QtEmbedded。最后希望本文能帮你解决问题。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-17 09:19:03

Qt 4.5.1 Sqlite 移植

2009-12-10 10:25:12

Linux触摸屏驱动

2010-09-02 08:46:16

苹果触摸屏

2009-07-01 09:27:36

触摸屏驱动WinCE

2012-05-14 15:11:23

戴尔一体机

2013-01-11 10:08:43

PC操作系统

2012-02-28 14:07:17

Android触摸屏手势识别

2012-04-10 09:09:21

2012-07-19 09:04:29

Windows 8Office 2013

2011-10-19 15:34:13

惠普一体机

2011-06-30 16:08:05

Qt 字库 QPF

2013-11-27 15:59:21

微软Kinect触摸屏

2011-07-04 17:26:00

Qt SQLite

2011-06-09 15:18:07

QT 编译

2011-10-25 15:18:08

戴尔一体机

2021-02-06 10:40:45

鸿蒙HarmonyOS应用开发

2011-11-15 11:04:14

黑莓BBX

2009-09-03 16:17:45

2011-07-12 10:10:58

2013-07-09 13:38:13

触摸屏用户体验UI设计
点赞
收藏

51CTO技术栈公众号