Chinaunix首页 | 论坛 | 博客
  • 博客访问: 397312
  • 博文数量: 29
  • 博客积分: 2091
  • 博客等级: 大尉
  • 技术积分: 463
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-05 10:53
文章分类
文章存档

2012年(2)

2011年(6)

2010年(12)

2009年(9)

我的朋友

分类: LINUX

2009-01-12 14:50:06

我用的版本是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.3
make,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
下载: 下载
阅读(17003) | 评论(10) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-19 10:36:48

今天终于搞定了,原来是tslib1.4文件的问题,不知是我的板子不支持还是楼主发的不对,用楼主给的下到板子上就是不对,最后按照http://www.eefocus.com/wenes1/blog/10-05/190293_09ed8.html这个帖子的方法,(1)下载最新版本的tslib,目前最新的是1.4版,下载方法是通过CVS下载: $ mkdir - m777 cvs $ cd cvs $ export CVSROOT = : pserver : anoncvs@cvs . handhelds . org : / cvs $ cvs login Logging in to : pserver : anoncvs@cvs . handhelds . org : 2401 / cvs CVS password : anoncvs cvs login : CVS password file / home / daiq / . cvspass does not exist - creating a new file $ cvs co apps / tslib 这样会在你

chinaunix网友2010-11-17 22:02:59

我在做devkit8000移植tslib1.4时出现了问题,请帮忙看看! 一: 软硬件 1. 主机: ubuntu 8.04 2. 平台: devkit8000(omap3530) 3. tslib-1.4 4. QT版本: qtopia-core-opensource-src-4.3.5(http://www.qtcn.org/bbs/read.php?tid=3144&page=1&fpage=1) 5. 交叉编译工具: arm-none-linux-gnueabi-2007q3 二: 移植tslib 1. tar xzvf tslib-1.4.tar.gz cd tslib/ export CC=arm-none-linux-gnueabi-gcc export CXX=arm-none-linux-gnueabi-g++ 2. ./autogen.sh 3. echo "ac_cv_func_malloc_0_nonnull=yes" >arm-none-linux-gn

chinaunix网友2010-06-06 10:34:01

I have resolved above problem, just add yourself compiler at ./mkspecs/qws/linux-arm-g++/qmake.conf, the following is the modified qmake.conf # # qmake configuration for building for ARMv6 devices with arm-linux-g++ # include(../../common/g++.conf) include(../../common/linux.conf) include(../../common/qws.conf) QMAKE_INCDIR = /work/arm/gui/work/tslib-1.4/include QMAKE_LIBDIR = /work/arm/gui/work/tslib-1.4/lib # modifications to g++.conf QMAKE_CC =/usr/CodeSourcery/

chinaunix网友2009-06-15 14:11:06

小弟现在要移植qt-embedded-opensource-4.5.1到板子上,使用qt自带的触摸屏校准程序,记过很不让人满意,所以我现在打算用tslib-1.4给qt4.5.1打补丁 软件环境:centos5.2,gcc-4.1.1(crosstools) 硬件:ARM920T 系统:qt-embedded-opensource-4.5.1.tar.gz 解压到/home/Raymond/qt-embedded-arm-tslib下 tslib-1.4编译通过,安装到/usr/local/下,同时复制了一份到/nand1/tslib-1.4中 进入/home/Raymond/qt-embedded-arm-tslib中 执行:./configure -prefix /nand1/Trolltech/QtEmbeddedARMTSLib -release -shared -qvfb -make libs -nomake tools -make examples -make docs -make

hugerat2009-06-05 16:54:01

qconfig_nocursor.h是我用qtconfig生成的。qtconfig在QT的tools目录下有,编译一下就会生成的。