首先声明我并不是喜新厌旧,我活着就是为了折腾!哈哈......(有点过了)
很久没有碰Qt了,因为需要所以移植一下Qt到arm上,没有查阅最新版本到底有什么改动,但是总是忍不住的用新东东。想起公司老总说的一句话:人追求好的东西总是无止境的。他的本意是想说,虽然公司卖的是奢侈品,但是总是有许多客户的,因为人总是想着追求好的东西,包括物质与精神世界,很有道理,这跟我们有了nokia之后总想着买iphone了是一个道理。淡定淡定......
==============================================================================
交叉编译器:arm-linux-gcc 4.4.3(友善之臂提供)
平台:Ubuntu 10.04
硬件:mini2440,256M Flash,X35 LCD
Tslib:Tslib-1.4
==============================================================================
在前面内核和文件系统都是用4.1.2版本的交叉编译器编译的,本来没打算换编译器的,但是4.1.2编译器无法编译4.8.0版本qt,如果现在用qt应用程序用高版本的编译器会不会有什么问题?我是有这个担心的,但是最终的实验结果是只要替换掉高版本的lib即可。而为了不出现不必要的麻烦,我将文件系统重新用arm-linux-gcc.4.4.3编译了一遍。
一.准备工作
移植之前首先确保LCD和触摸屏移植成功。可以参阅:
老规矩,第一步还是移植tslib。
- #tar xzvf tslib-1.4.tar.gz
- #cd tslib/
- #./autogen.sh
- #echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
- #./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no -prefix=/home/xura/opt/tslib
- #make && make install
- #cp -fr /home/xura/opt/tslib /home/xura/work/tslib(没有则新建一个)
- #cd /home/xura/work/tslib/etc
- #vi ts.conf
去掉module_raw input前面的#号,同时把它的#号注释项全部删除,不要让这些BT的东东扰乱了你的思维。
我的最终ts.conf内容为:
将tslib下载到开发板,我使用的U盘。当然linux内核要支持USB咯。可以参考:
http://blog.chinaunix.net/space.php?uid=20788517&do=blog&id=34705
设置环境变量:
在开发板设置环境变量(我将tslib放置在/opt目录下)
我的最终ts.conf内容为:
- module_raw input
- module pthres pmin=1
- module variance delta=30
- module dejitter delta=100
- module linear
http://blog.chinaunix.net/space.php?uid=20788517&do=blog&id=34705
设置环境变量:
在开发板设置环境变量(我将tslib放置在/opt目录下)
- #vi setenv.sh
export T_ROOT=/opt/tslib
export LD_LIBRARY_PATH=$T_ROOT/lib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=$T_ROOT/pointercal
export LD_LIBRARY_PATH=$T_ROOT/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$T_ROOT/lib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=$T_ROOT/pointercal
export LD_LIBRARY_PATH=$T_ROOT/lib:$LD_LIBRARY_PATH
- chmod +x setenv.sh
- . setenv.sh
- cd /opt/tslib/bin
- ./ts_calibrate
二.编译Qt4.8.0
我的配置:
- #./configure -prefix /home/xura/work/qtearm_4.8.0 -embedded arm -no-opengl
- -no-qt3support -no-cups -no-dbus -no-3dnow -no-neon -no-phonon -no-openssl
- -no-svg -qt-mouse-tslib -I (我的tslib目录/include) -L (我的tslib目录/lib)
-
- #make && make install
编译完成之后Qt被安装在/home/xura/work/qtearm_4.8.0目录下。
设置环境变量:
- #vi setqteenv.sh
QTEDIR=/home/xura/work/qtearm_4.8.0
PATH=$QTEDIR/bin:$PATH
LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
PATH=$QTEDIR/bin:$PATH
LD_LIBRARY_PATH=$QTEDIR/lib:$LD_LIBRARY_PATH
#source setqteenv.sh
即可生效环境变量,使用qmake等工具了。
三.移植Qt
写一个应用程序,移植到开发板。
可以到qt的example或者demo里面找,这里我用自己写的代码做测试。用qt for PC测试:
qmake-->make-->
在ubuntu下面运行结果:
用qtearm_4.8.0编译之后,查看共享库。
将程序与库文件与下载到开发板,设置开发板的环境变量:
- #vi setqtearm.sh
export T_ROOT=/opt/tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=$T_ROOT/pointercal
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=$T_ROOT/pointercal
export QTEDIR=/opt/qtearm
export QT_QWS_FONTDIR=$QTEDIR/lib/fonts
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export QWS_KEYBOARD=none
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTEDIR/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export QWS_KEYBOARD=none
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTEDIR/lib:$LD_LIBRARY_PATH
运行程序即可。
有图有真相。(手机拍的)