关于Qt移植arm上点击没反应,箭头也不动的问题

关于Qt的移植,以前移植过一次S3C2440的.现在这平台是AT91SAM9X35的.不过移植过程都一样,只不过遇到了以前没遇到的事情,在此记录下来

平台:AT91SAM9X35

环境:linux-2.6.39

移植Qt版本:4.6.4

交叉编译器:arm-linux-gcc

移植过程遇到的问题:运行Qt程序,点击屏幕没有反应.鼠标也没动.

(1)问题分析:交叉编译器头文件EV_VERSION宏与所移植的内核版本的EV_VERSION宏不一样.

解决途径

查看下EV_VERSION的定义.

交叉编译器中的位置:/opt/buildroot-2011.11/arm926t/usr/arm-unknown-linux-uclibcgnueabi/sysroot/usr/include/linux/input.h 这是我交叉编译器中该文件的位置

linux内核中的位置:include/linux/input.h

我这里两个都是   #define EV_VERSION      0x010001. 也有的是0x010000 只要两个文件下的一样就可以. 如果不一样,就去把内核里的改成匹配交叉编译器里的.

该问题产生的现象

如果在运行Qt程序之前,运行tslib库进行校正的话, 会出现selected device is not a touchscreen I understand的错误.出现这个错误信息的原因和

调试方法下篇再讲.

(2)问题分析:环境变量设置不正确

解决途径

export QWS_MOUSE_PROTO=TSLIB:/dev/event0

export TSLIB_TSDEVICE=/dev/event0

这是主要的环境变量,其他的就不在这贴了,都一样.

当然,有的是/dev/input/event0或其他的,这里就要测试一下到底是哪个.

测试方法

1、cat /dev/event0 然后点击触摸屏,看是否有东西输出,乱码也是可以的.

2、hexdump /dev/event0 点击屏幕,查看是否有数据输出. 

两种方法的原理都一样,就是要确认哪个是触摸屏的设备

(3)问题分析:编译Qt库出现问题

我的问题就是在这里,编译的时候configure是时候没加入-qt-mouse-tslib这个选项,所以configure的时候要加入这个选项. 下面是我的编译选项,仅供参考

./configure -prefix /apps/qt-everywhere-arm926t/ \
-release \
-shared \
-fast \
-no-largefile \
-qt-sql-sqlite \
-no-qt3support \
-no-xmlpatterns \
-no-mmx \
-no-3dnow \
-no-sse \
-no-sse2 \
-no-svg \
-no-webkit \
-qt-zlib \
-qt-gif \
-qt-libtiff \
-qt-libpng \
-qt-libmng \
-qt-libjpeg \
-make libs \
-xplatform qws/linux-arm-g++ \
-nomake tools \
-nomake examples \
-nomake docs \
-nomake demo \
-no-nis \
-no-cups \
-no-iconv \
-no-dbus \
-no-openssl \
-embedded arm \
-little-endian \
-qt-freetype \
-depths 16,18 \
-no-glib \
-qt-mouse-tslib \
-no-javascript-jit \
-no-script \
-no-scripttools \

至此,问题解决完毕.

你可能感兴趣的:(Qt)