宿主机:Fedora13
目标 机:s3c2440
交叉 编译 器:arm-linux-gcc- 3.4.1
交叉编译器路径:/usr/local/arm/3.4.1
qt版本:qt-embedded-linux-opensource-src-4.5.3
tslib版本:tslib-1.4.tar.gz
一、移植tslib
1.下载TSLIB-1.4源码:
#mkdir tslib (这是你存放TSLIB 源码的文件夹,我们下面要通过CVS网络下载源码,网络上也能找到,但是有可能不好用)
#svn co svn://svn.berlios.de/tslib/trunk/tslib tslib
2.编译:
#cd tslib
#./autogen.sh (生成configure)
#./configure --host=arm-linux --prefix=/home/xxxx/tslib_build/ //(xxxx为你的系统用户名)
若make出错可在configure时加入--enable-inputapi=no
#make
#make install
3.添加到文件系统:
把 tslib_build/bin/下的ts_calibrate(触摸校准测试程序)拷到文件系统的/bin下,把tslib_build/lib/下的文件拷到文件系统的lib下,
/tslib_build/etc/ts.conf 拷到文件系统的/etc/下。
二、移植qt
1.下载源码:ftp://ftp.qt.nokia.com/qt/source/qt-embedded-linux-opensource-src-4.5.3.tar.gz
2.解压缩:#tar -xzvf qt-embeded-linux-opensource-src-4.5.3.tar.gz
3.修改源码,去掉鼠标指针:
#cd qt-embedded-linux-opensource-src-4.5.3/src/gui/embedded/
找到 qwscursor_qws.h,在里面加上#define QT_NO_QWS_CURSOR ,程序里面好像可以去掉,也可以不加。
4、configure
在qt-embedded-linux-opensource-src-4.5.3下建立一个脚本
#vim myconfig.sh
#!/bin/bash ./configure / -release -shared / -fast / -pch / #若编译出现类似<command line>:1: sorry, unimplemented: had to relocate PCH错误,则将其注释掉 -no-qt3support / -qt-sql-sqlite / -no-libtiff -no-libmng / -qt-libjpeg / -qt-zlib / -qt-libpng / -qt-freetype / -xplatform qws/linux-arm-g++ / -embedded arm / -depths 4,8,16,32 / -little-endian / -qt-kbd-usb / -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 / -no-qvfb / -qt-gfx-linuxfb / -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb / -no-webkit / -confirm-license / -qt-mouse-tslib -I/home/xxxx/tslib_build/include -L/home/xxxx/tslib_build/lib
根据移植需要选择相应的内容,执行configure
#source myconfig.sh
编译
#make (时间比较长)
5、编译完成后,把编译完的LIB库加到你的文件系统中:
cd your_rootfs cd opt mkdir qt mkdir qtopia mkdir qt/lib (存放你的QT库) mkdir qtopia/bin(存放你的QT应用程序) cp -rf qt-embedded-linux-opensource-src-4.5.2/lib qt/ cp qt-embedded-linux-opensource-src-4.5.2/examples/mainwindows/menus/menus qtopia/bin
6、制作QT启动脚本:
#vim bin/myqt
添加以下内容:
#!/bin/sh export set TSLIB_TSDEVICE=/dev/event0 export set TSLIB_CONFFILE=/etc/ts.conf export set TSLIB_PLUGINDIR=/lib/ts export set TSLIB_CALIBFILE=/etc/pointercal export set HOME=/root export set QTDIR=/opt/qt export set QPEDIR=/opt/qtopia export set KDEDIR=/opt/qt export set QWS_DISPLAY="LinuxFB:/dev/fb0" export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0" #export QWS_SIZE=320x240 export set QWS_KEYBOARD="USB:/dev/input/event1" export set QWS_MOUSE_PROTO="Tslib:/dev/event0" export set QT_PLUGIN_PATH=$QTDIR/plugins/ export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/ export set PATH=$QPEDIR/bin:$PATH export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_P ts_calibrate $QPEDIR/bin/menus -qws &
7、开机自动启动你的QT应用程序:
#vim etc/init.d/rcS
在最后一行添加:/bin/myqt &
8、.把刚才的文件系统,制作成内核支持的格式,然后烧入FLASH中。(移植过程中最好是采用NFS挂载的方式,这样方便调试,测试没有问题才烧到FLASH中),不出意外的话,你会看到TSLIB校准界面了,校准完会出现QT界面,点点看,准不准。
如果启动后显示无法打开/dev/null或者/dev/fb0设备等问题,这就需要自己手动添加相应的节点
#mknod -m 666 /dev/null c 2 2
#mknod /dev/fb0 c 29 0
然后手动执行一下/bin/myqt脚本,不出意外的话应该能正常显示屏幕校准的测试程序了。
由于本人的内核驱动并未完全移植好(尤其是触摸屏,LCD显示也不是很正常),所以出现画面之后触屏暂时无法使用,待重新编译下内核,将触摸驱动起来之后再进行后面的移植工作。