编译安装tslib1.4

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

 # apt-get installautoconf(或autoconf2.13
 # apt-get install automake
 # apt-get install libtool

tslib1.4解压到/home

$ ./autogen.sh
$ echo "ac_cv_func_malloc_0_nonnull=yes"> tmp.cache
$ ./configure --host=arm-linux --cache-file=tmp.cache --enable-inputapi=no --prefix=/home/shenjian/Documents/mytslib/tslib
$ make
$ make install

或者使用$make install-strip //生成瘦身应用程序和库

 注意:/home/zhangle1231/duancp/mytslib/tslib1.4安装的目录在装QtEmbedded-4.5.2-arm版本时需要用到此目录

打包mytslib

# tar czvf mytslib.tar.gz tslib

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

tar xzvf mytslib.tar.gz

设置环境变量,校准触摸屏。
修改开发板上:/etc/profile文件

#!/bin/sh

export QTDIR=/usr

export QPEDIR=/usr

export LD_LIBRARY_PATH=/usr/lib

export TSLIB_ROOT=/usr/local/mytslib

export TSLIB_TSEVENTTYPE=H3600

exportTSLIB_TSDEVICE=/dev/touchscreen/0raw

exportTSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  /注意检查ts.conf 参数是否设置正确

exportTSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal  /在执行校准程序calibrate后才会生成此文件

export TSLIB_FBDEVICE=/dev/fb/0

exportQWS_MOUSE_PROTO="Tslib:/dev/touchscreen/0raw"

export QWS_KEYBOARD="USB:/dev/tty"  /假如提示找不到KEYBOARD则需要这条

export TSLIB_CONSOLEDEVICE=none

export QT_QWS_FONTDIR=/usr/lib/fonts/否则提示在/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/fonts找不到字体

export QWS_SIZE=320x240

ln -s /dev/fb/0 /dev/fb0   /需做连接否则找不到设备

注意:触摸屏的前提是你的触摸屏驱动已经写好,并加载进了内核.你可以测试有没有加载触摸屏驱动,cat /dev/touchscreen/0raw) ,

点击触摸屏,看终端有无显示,若有则表明正确。

修改设置文件ts.conf将对应的参数module_raw h3600注释去掉否则会提示: selected device is not a touchscreen Iunderstand错误信息

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

会在/etc目录生成一个:pointercal触摸屏效准的必须文件

可以运行此目录下的其他程序进行测试。

 

5.编译安装QtEmbedded-4.5.2-arm版本

进入/root/local/qt/qt-x11-opensource-src-4.4.3-arm目录,进行编译安装。在终端中进行如下操作:

# tar xjvfqt-embedded-linux-opensource-src-4.5.2.tar.bz2

#mv qt-embedded-linux-opensource-src-4.5.2qt-embedded-linux-opensource-src-4.5.2-arm
# cd qt-embedded-linux-opensource-src-4.5.2-arm

 

配置编译

./configure -verbose -prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools -nomake docs  -qt-gfx-transformed  -qt-gfx-linuxfb -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -qt-kbd-linuxinput 

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

假如提示mkspec/qws/linux-arm-g++/qmake.confQMAKE_INCDIRQMAKE_LIBDIR错误信息

qmake.conf文件中加入

QMAKE_INCDIR=/usr/local/tslib/include

QMAKE_LIBDIR=/usr/local/tslib/lib

重新./configure

#make

#make install

如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。请不要在windows下复制此命令否则容易出现一些莫名其妙格式的错误提示。

 

安装默认目录在/usr/local/trolltech/QtEmbedded-4.5.2-arm

 

打包编译安装好的QtEmbedded库文件以备以后使用:
   # tar czvfQtEmbedded-4.5.2-arm.tar.gz QtEmbedded-4.5.2-arm

编译ARMQT应用程序前建立环境变量:
export QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/
exportPATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/:$PATH

ExportLD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/lib/:$

LD_LIBRARY_PATH

 

编译简单的QT程序或者QtEmbedded-4.5.2-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.1/arm-linux/lib中拷贝到开发板上即可






问题分析:

 问题一:

制作动态根文件系统启动时,提示:Failed to execute /linuxrc.……kernel panic-not syncing:No init found.


这里发生错误是因为制作动态根文件系统时,库没完整拷贝到/nfsroot/rootfs/lib下

cp *.so* /nfsroot/rootfs/lib -d还是卡在这,后来改用-dpR通过了。

 

问题二:

echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache //避免检查ac_cv_func_malloc_0_nonnull

若出现提示: undefined reference to rpl_malloc

解决:

发现config.h.in和config.h里定义了

#undef malloc

#undef realloc

把这两个用//注释掉,编译顺利通过。

 

问题三:

/usr/local/tslib/bin # ./ts_calibrate

提示:

No raw modules loaded.

解决:修改ts.conf

/usr/local/tslib # vi etc/ts.conf


问题四:

tslib库selected device is not a touchscreen I understand解决.

解决: 
1.将内核源代码里的include/linux/input.h中的 
    #define EV_VERSION        0x010001 
    改为: 
    #define EV_VERSION        0x010000 
2.将arm交叉编译工具中的头文件库中的 
    linux/input.h中的 
    #define EV_VERSION        0x010000 
    改为 
    #define EV_VERSION        0x010001 
    再编译tslib库 
一般第一种就可以解决问题了,因此,出现上面情况时,先不要急于换版本,如果二者版本不等,那么改一个就可以

我自己修改内核VERSION为 0x010000和0x010001都不行。

后来把编译器的改成0x010001时,内核为0x010001时可以使用

 

编译器:

[root@localhost 4.5.1]# grep "EV_VERSION" * -nR

arm-none-linux-gnueabi/sys-root/usr/include/linux/input.h:32:#define EV_VERSION 0x010001

内核代码:

# vim /home/test/4-3-1/linux-3.0.1/include/linux/input.h

#define EV_VERSION 0x010001 // gjl 0x010001

 

问题五:

./ts_calibate 校准触摸屏后未产生校准文件,提示Illegal instruction

百度提示不支持浮点型?

解决:

用4.4编译器的glibc库,解决了非法指令,可能是其他编译器的glib库不完整导致。

 

全套换成4.4编译器的

/usr/local/tslib/bin # ./ts_calibrate

xres = 480, yres = 272

Took 5 samples...

Top left : X = 12442 Y = 9939

Took 4 samples...

Top right : X = 4159 Y = 9793

Took 4 samples...

Bot right : X = 4092 Y = 6531

Took 3 samples...

Bot left : X = 12635 Y = 6443

Took 4 samples...

Center : X = 8458 Y = 8201

624.591797 -0.045147 -0.000891

550.521240 0.000166 -0.050836

Calibration constants: 40933248 -2958 -58 36078960 10 -3331 65536

校正后生成校准文件

 

小结:这里使用4.4.1编译器,编译器和内核都使用EV_VERSION 0x010001,glib使用4.4.1里面的。就成功移植了tslib。


进入解压目录后./configure ...-qt-mouse-tslib...其它的编译选项,我就不说了,一般不会出什么问题。-qt-mouse-tslib这个选项是专门针对触摸屏的。有相当多一部人会出这样一个问题:Thetslib functionality test failed!You might need to modify the include and library search paths by editing QMAKE_INCDIR and QMAKE_LIBDIR in...

那么你可以这样做:在../qt-embedded-linux-opensource-src-4.5.3/mkspecs/qws/linux-arm-g++/qmake.conf文件中加入
QMAKE_INCDIR =/usr/local/tslib/include

QMAKE_LIBDIR =/usr/local/tslib/lib
当然也可在./configure里加入-I/=/usr/local/tslib/include -L=/usr/local/tslib/lib来解决问题,可是当你试过了以上方法后仍不奏效,怎么办?这也是我今天特意写这文章的原因。

特别要提到CuteQt Blog一篇名为''qtopia/qt-extended的配置时错误(configure error)"的文章。上面提到,这样的问题实际的解决办法:在./configure选项里加入-verbose,这样可以比较详细地告诉你错误的原因,本人也是在这样的提示下找到最终的问题所在。文章提到的第二种方法,其实效果和加-verbose是一样的,在此不再赘述。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值