将qt-embedded-linux移植至arm(s3c2440)
宿主机: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
view plaincopy to clipboardprint?01.#!/bin/bash 02../configure / 03.-release -shared / 04.-fast / 05.-pch / #若编译出现类似<command line>:1: sorry, unimplemented: had to relocate PCH错误,则将其注释掉 06.-no-qt3support / 07.-qt-sql-sqlite / 08.-no-libtiff -no-libmng / 09.-qt-libjpeg / 10.-qt-zlib / 11.-qt-libpng / 12.-qt-freetype / 13.-xplatform qws/linux-arm-g++ / 14.-embedded arm / 15.-depths 4,8,16,32 / 16.-little-endian / 17.-qt-kbd-usb / 18.-no-openssl / 19.-nomake examples -nomake demos -nomake tools / 20.-optimized-qmake / 21.-no-phonon / 22.-no-nis / 23.-no-opengl / 24.-no-cups / 25.-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm / 26.-no-xinerama -no-xshape / 27.-no-separate-debug-info / 28.-no-qvfb / 29.-qt-gfx-linuxfb / 30.-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb / 31.-no-webkit / 32.-confirm-license / 33.-qt-mouse-tslib -I/home/xxxx/tslib_build/include -L/home/xxxx/tslib_build/lib #!/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库加到你的文件系统中:
view plaincopy to clipboardprint?01.cd your_rootfs 02.cd opt 03.mkdir qt 04.mkdir qtopia 05.mkdir qt/lib (存放你的QT库) 06.mkdir qtopia/bin(存放你的QT应用程序) 07.cp -rf qt-embedded-linux-opensource-src-4.5.2/lib qt/ 08.cp qt-embedded-linux-opensource-src-4.5.2/examples/mainwindows/menus/menus qtopia/bin 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
添加以下内容:
view plaincopy to clipboardprint?
01.#!/bin/sh
02.export set TSLIB_TSDEVICE=/dev/event0
03.export set TSLIB_CONFFILE=/etc/ts.conf
04.export set TSLIB_PLUGINDIR=/lib/ts
05.export set TSLIB_CALIBFILE=/etc/pointercal
06.export set HOME=/root
07.export set QTDIR=/opt/qt
08.export set QPEDIR=/opt/qtopia
09.export set KDEDIR=/opt/qt
10.export set QWS_DISPLAY="LinuxFB:/dev/fb0"
11.export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
12.#export QWS_SIZE=320x240
13.export set QWS_KEYBOARD="USB:/dev/input/event1"
14.export set QWS_MOUSE_PROTO="Tslib:/dev/event0"
15.export set QT_PLUGIN_PATH=$QTDIR/plugins/
16.export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
17.export set PATH=$QPEDIR/bin:$PATH
18.export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_P
19.ts_calibrate
20.$QPEDIR/bin/menus -qws &
#!/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显示也不是很正常),所以出现画面之后触屏暂时无法使用,待重新编译下内核,将触摸驱动起来之后再进行后面的移植工作。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huihui1988/archive/2010/09/12/5879211.aspx