东方直播室李玉成视频:QT4-embedded-4.4.3使用tslib的编译
来源:百度文库 编辑:中财网 时间:2024/05/12 08:52:43
QT4-embedded-4.4.3使用tslib的编译 (2009-01-12 14:50) 分类: QT应用程序开发我用的版本是qt4-embedded-4.4.3编译过程如下下载qt-embedded-linux-opensource-src-4.4.3.tar.bz2,再解压。因为解压后的目录名很长,为方便,重命名为qt4-embedded-4.4.3进入此目录。建立myconfigure脚本文件。此文件内容为#! /bin/sh./configure \
-prefix /qtlib/ \
-release -shared \
-fast \
-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\
-optimized-qmake \
-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-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\
-qt-kbd-usb \
-confirm-license \
-qt-mouse-tslib其中,指定qt-mouse-[driver]参数为-qt-mouse-tslib,即使用tslib库为qt-mouse的库,实际也就是让QT4使用tslib操作触摸屏。这点与qt3不同,qt3要使用tslib还要打上tslib的补丁才行。然后,执行myconfigure脚本,执行到验证tslib一步时,通常会报错,大意是验证tslib失败。提示说要修改/makespec/qws/linux-arm-g++下的qmake.conf文件,设定QMAKE_INCDIR和QMAKE_LIBDIR,我的设定如下,我是把tslib1.3编译生成的lib文件和include文件拷贝到了qt4目录的新建目录tslib下。QMAKE_INCDIR = /home/lijin/qt-embedded-4.4.3/tslib
QMAKE_LIBDIR = /home/lijin/qt-embedded-4.4.3/tslib做完修改,继续执行myconfigure,顺利完成confiuge工作。注:这里其实也可在configure参数中加-I 和-L指定编译好的tslib的include目录和lib目录所在路径。我用的是tslib1.3make,make install后,执行QT程序所需的文件都在/home/lijin/qt/build中了,把其中的lib目录拷到根文件中重命名为qtlib。再编译一个例子程序,编译例子程序时,先执行qmake ,再执行make ,要注意的是qmake要用刚刚编译产生的qmake不能用系统自带的,否则报错。在开发板环境变里中加入qtlib的路径,运行例子程序,要加-qws参数,但还是报错
QWSServerSocket: could not bind to file /tmp/qtembedded-0/QtEmbedded-0
Error: Bad file descriptor
Failed to bind to /tmp/qtembedded-0/QtEmbedded-0
Aborted
查资料后得知,要在linux内核配置时,选中networking->networking options->Unix domain sockets选项才行,重新编译内核后,这个错不再报,但报找不到字体文件。设置了QTLIB变量也不行,原来qt4会链接到指定目录,不是像qt3那样靠环境变量。
编译时要用-R 参数指定程序链接库的路径。同时,还要用no-rpath使得不用默认的链接路径。但是,还是不行,我发现这样做,就不用在系统环境中加入qtlib路径了,但是还是报找不到字体。最后只好不使用-R参数方法,而是将prefix参数设为和开发板上的qtlib所在的目录一致。程序可以正常运行,也不用设定QTLIB,QTDIR环境变量了。但触摸屏用不起来。在profile中加入下面的环境变量后,一切正常了。export V_ROOT=/tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=$V_ROOT/etc/pointercal
export TSLIB_CONFFILE=$V_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$V_ROOT/share/ts/plugins
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export LD_LIBRARY_PATH=$V_ROOT/lib:$LD_LIBRARY_PATH要注意的是QWS_MOUSE_PROTO变量,这个变量设置错误时,触摸屏照样有反应,但不能正常操作。很容易让人迷惑,我在这里卡了半天,最后在仔细翻看了以前移植qte3.3.4+tslib1.3的工作笔记后,才发现这里弄错了。事实上,设置正确以后,QT4自带的mousecalition程序运行后,点触摸屏是没有反应的。设置错误,有反应,但不能完成校正工作。(使用tslib时,校正工作以tslib自带的ts_calibration完成的。tslib的编译和设置,可以看我另一篇tslib1.3编译和设置的文章)总体来说,QT4 embedded的编译是很顺利的,比qt3 embedded要好弄多了。 注:后来发现触摸屏存在单击变成多击的问题。经查询网络,发现是版本问题,qt4是支持tslib1.4的。qt2是支持tslib1.3,而qt3本身不支持tslib,加了补丁后,能支持tslib1.3,因此我又用了tslib1.4重新编译,一切正常了。重新编译的配置文件如下,其中,定义了鼠标光标不显示。#! /bin/sh./configure \
-prefix /qtlib \
-release -shared \
-fast \
-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\
-optimized-qmake \
-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-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\
-qt-kbd-usb \
-confirm-license \
-qt-mouse-tslib \
-qconfig nocursor \
-I/tslib-1.4/include \
-L/tslib-1.4/lib
另外,网上tslib-1.4十分难找,为方便大家,我把它传上来了。tslib-1.4下载文件:tslib-1.4.tar.gz大小:58KB下载:下载
-prefix /qtlib/ \
-release -shared \
-fast \
-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\
-optimized-qmake \
-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-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\
-qt-kbd-usb \
-confirm-license \
-qt-mouse-tslib其中,指定qt-mouse-[driver]参数为-qt-mouse-tslib,即使用tslib库为qt-mouse的库,实际也就是让QT4使用tslib操作触摸屏。这点与qt3不同,qt3要使用tslib还要打上tslib的补丁才行。然后,执行myconfigure脚本,执行到验证tslib一步时,通常会报错,大意是验证tslib失败。提示说要修改/makespec/qws/linux-arm-g++下的qmake.conf文件,设定QMAKE_INCDIR和QMAKE_LIBDIR,我的设定如下,我是把tslib1.3编译生成的lib文件和include文件拷贝到了qt4目录的新建目录tslib下。QMAKE_INCDIR = /home/lijin/qt-embedded-4.4.3/tslib
QMAKE_LIBDIR = /home/lijin/qt-embedded-4.4.3/tslib做完修改,继续执行myconfigure,顺利完成confiuge工作。注:这里其实也可在configure参数中加-I 和-L指定编译好的tslib的include目录和lib目录所在路径。我用的是tslib1.3make,make install后,执行QT程序所需的文件都在/home/lijin/qt/build中了,把其中的lib目录拷到根文件中重命名为qtlib。再编译一个例子程序,编译例子程序时,先执行qmake ,再执行make ,要注意的是qmake要用刚刚编译产生的qmake不能用系统自带的,否则报错。在开发板环境变里中加入qtlib的路径,运行例子程序,要加-qws参数,但还是报错
QWSServerSocket: could not bind to file /tmp/qtembedded-0/QtEmbedded-0
Error: Bad file descriptor
Failed to bind to /tmp/qtembedded-0/QtEmbedded-0
Aborted
查资料后得知,要在linux内核配置时,选中networking->networking options->Unix domain sockets选项才行,重新编译内核后,这个错不再报,但报找不到字体文件。设置了QTLIB变量也不行,原来qt4会链接到指定目录,不是像qt3那样靠环境变量。
编译时要用-R 参数指定程序链接库的路径。同时,还要用no-rpath使得不用默认的链接路径。但是,还是不行,我发现这样做,就不用在系统环境中加入qtlib路径了,但是还是报找不到字体。最后只好不使用-R参数方法,而是将prefix参数设为和开发板上的qtlib所在的目录一致。程序可以正常运行,也不用设定QTLIB,QTDIR环境变量了。但触摸屏用不起来。在profile中加入下面的环境变量后,一切正常了。export V_ROOT=/tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CALIBFILE=$V_ROOT/etc/pointercal
export TSLIB_CONFFILE=$V_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$V_ROOT/share/ts/plugins
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export LD_LIBRARY_PATH=$V_ROOT/lib:$LD_LIBRARY_PATH要注意的是QWS_MOUSE_PROTO变量,这个变量设置错误时,触摸屏照样有反应,但不能正常操作。很容易让人迷惑,我在这里卡了半天,最后在仔细翻看了以前移植qte3.3.4+tslib1.3的工作笔记后,才发现这里弄错了。事实上,设置正确以后,QT4自带的mousecalition程序运行后,点触摸屏是没有反应的。设置错误,有反应,但不能完成校正工作。(使用tslib时,校正工作以tslib自带的ts_calibration完成的。tslib的编译和设置,可以看我另一篇tslib1.3编译和设置的文章)总体来说,QT4 embedded的编译是很顺利的,比qt3 embedded要好弄多了。 注:后来发现触摸屏存在单击变成多击的问题。经查询网络,发现是版本问题,qt4是支持tslib1.4的。qt2是支持tslib1.3,而qt3本身不支持tslib,加了补丁后,能支持tslib1.3,因此我又用了tslib1.4重新编译,一切正常了。重新编译的配置文件如下,其中,定义了鼠标光标不显示。#! /bin/sh./configure \
-prefix /qtlib \
-release -shared \
-fast \
-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\
-optimized-qmake \
-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-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\
-qt-kbd-usb \
-confirm-license \
-qt-mouse-tslib \
-qconfig nocursor \
-I/tslib-1.4/include \
-L/tslib-1.4/lib
另外,网上tslib-1.4十分难找,为方便大家,我把它传上来了。tslib-1.4下载文件:tslib-1.4.tar.gz大小:58KB下载:下载
Jboss Embedded EJB3怎样使用?
Jboss Embedded EJB3怎样使用?
Windows CE 5.0和Windows XP Embedded中文使用教程
什么是embedded overclocking solution
Embedded system development experience
Embedded & Wireless的区别
IBM本本驱动 embedded
关于 Windows XP Embedded
embedded poles是什么东西
embedded poles是什么东西
Windows XP Embedded 是什么东西
什么是Embedded Controller?(IBM的)
the Group Embedded Figure Test
请问embedded training team是什么意思?
embedded visual c++ 3.0 下载
Windows Embedded Studio哪儿有下载
Windows Embedded、Windows Mobile、Windows Vista
PEG(Portable Embedded GUI )怎么用?
FLASH 产品中Embedded & Wireless的区别
Microsoft ACPI-Compliant Embedded Controller求助
PC机能否装Windows XP Embedded?
SOLID Embedded Engine是啥含义?
什么是Windows XP Embedded 和专业版有什么区别?
求精简版XP Embedded的下载地址