用了一天的时间,阅读了大量的资源,总算把QT2.*的触摸屏给弄好了,哈.成就来的太容易,总觉得哪里有问题,不塌实...发出来让大家看看吧,欢迎交流,希望能给同样想解决这个问题的朋友们一些少许的帮助.
弄这个我主要参考了网上的尘封の觉醒的方法
#######需要的相关软件包:
qt-embedded-2.3.10-free.tar.gz
qt-x11-2.3.2.tar.gz
tmake-1.13.tar.gz
tslib.tar.gz
#######解压上面的相关包以后,有以下几个目录:
qt-2.3.10
qt-2.3.2
tmake-1.13
tslib
tslib-install
这些解压以后的目录都放在同一个目录下,例如,我把他们都放在了/root/myTslib/下
#######设置相关的环境变量
这些环境变量都是在/root/myTslib/ 下设置的,因为我把上面解压以后的文件夹放在了此目录下.
export QTEDIR=$PWD/qt-2.3.10
export QT2DIR=$PWD/qt-2.3.2
export TMAKEDIR=$PWD/tmake-1.13
export TSLIBDIR=$PWD/tslib
export TSLIBINST=$PWD/tslib-install
export LD_LIBRARY_PATH=$TSLIBINST/lib
export CC=arm-linux-gcc
cd tslib
./autogen.sh --host=arm-linux --prefix=$TSLIBINST
make -j4
make install
########注意::在编译qte-2.3.10和qte-2.3.2时,$TMAKEDIR/lib/qws/linux-arm-g++/tmake.conf文件中
“TMAKE_LINK= arm-linux-gcc”
“TMAKE_LINK_SHLIB= arm-linux-gcc”
一定是上面的那样,用gcc
#####cp tslib to qte lib dir
cp -a $TSLIBDIR/src/.libs/* $QTEDIR/lib/
cp -a $TSLIBDIR/plugins/.libs/*.so $QTEDIR/lib/
cp -a $TSLIBINST/bin/* $QTEDIR/bin
cp -a $TSLIBINST/etc/ts.conf $QTEDIR/.
cp -a $TSLIBINST/include/ts* $QTEDIR/include/.
####Build Qt/X11 2.3.2
cd $QT2DIR
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
make clean
./configure -no-opengl -no-xft
make
cp -f bin/uic $QTEDIR/bin/ //没有这一步也性
#####Build Qt/Embedded
编译之前要修改一些东西
1.在 qt-2.3.10/src/kernel/ 下,修改qwsmouse_qws.cpp程序,此文件中有3处/etc/pointercal,把这3处的etc修改成tmp
,因为开发板是在/tmp/下找到校正信息温暖文件的,"pointercal"这个名子随便改,只要在接下来的环境变量设置时,
写成相应的就行(看接下来的几步)
2.修改 /qt-2.3.10/configs/linux-arm-g++-shared文件:
#Linking application下的SYSCONF_LIBS = -lm 修改为 SYSCONF_LIBS=-lm -lts
#Linking shared libraries 下的 SYSCONF_LINK_SHLIB=arm-linux-gcc修改为
SYSCONF_LINK_SHLIB=arm-linux-gcc -lts
修改完后,开始编译 qte-2.3.10
cd $QTEDIR
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QT2DIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
cp -f ../qconfig-large.h src/tools/qconfig-my.h
上面的cp命令中的 qconfig-large.h是老师给的一个头文件
/configure -xplatfrom linux-arm-g++ -qconfig my -no-qvfb -depths 16 -tslib -thread -I$TSLIBINST/include -L$TSLIBINST/lib
此时参照我的另外一个问题解决贴进行Q2的解决:
make sub-src
这样编译工作就完成了,生成的支持触摸屏的库在qte-2.3.10/lib下,把这些库考到开发板的/usr/lib/下即可
########以下为arm2410-S开发板上的工作
设置环境变量
export QTDIR=/usr/
export QTEDIR=/usr/
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/tmp/ts.conf
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CALIBFILE=/tmp/pointercal //这一个和上面的编译qte时修改etc的相对应
export TSLIB_PLUGINDIR=/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib
export QWS_SIZE=640x480
export QWS_MOUSE_PROTO="TPanel:/dev/input/event0 USB"
export LANG=zh_CN
insmod /mnt/yaffs/touchscreen/ts-uptech.o
在主机的tslib-install/etc有ts.conf,把他考到开发板的/tmp下.
再把tslib-install/bin下的三个可执行程序ts_calibrate,ts_print,ts_test考到开发板上,其中ts_calibrate为触摸屏的
校正程序.
在开发板上运行ts_calibrate进行校验,此时会在开发板的/tmp/下生成上面提到的pointercal程序文件,此程序是为
以后应用程序服务的,要用他来进行校正.
##########编译应用程序测试
在主机上编译一个应用程序,在qte-2.3.10/exmples/下有应用序.
注意: 编译应用程序时,要修改tmake-1.13/lib/qws/linux-arm-g++/tmake.conf文件
将其中的: “TMAKE_LINK= arm-linux-gcc”
“TMAKE_LINK_SHLIB= arm-linux-gcc”
修改为 : “TMAKE_LINK= arm-linux-g++”
“TMAKE_LINK_SHLIB= arm-linux-g++”
编译应用程序需要的环境变量:
TMAKEDIR,TMAKEPATH,QTEDIR,QTDIR
其中QTDIR指向QTEDIR
注释: 编写自己的Makefile时候可能要手动修改编译参数 加上 -lts
设备驱动有可能不是event0 需要具体设置
qconfig-my.h 配置文件可以随意
找不到库的话就手动到编译器的库路径中添加
---sprife