北京顶嵌开源科技有限公司WWW.TOP-E.ORG400-661-5264专注嵌入式Linux技术QT4移植到ARM9开发板1编译qte1.从www.trolltech.com下载源代码,选择开源版本(非商业版本),选择Qtlibraries4.5forembeddedlinux(128M)2.在源代码目录下执行:3../configure–embeddedarm-xplatformqws/linux-arm-g++-no-qt3support-qt-mouse-linuxtp4.在redhat9.0环境需要作一些修改才能编译通过:5.ln-s/usr/kerberos/include/com_err.h/usr/include/6.ln-s/usr/kerberos/include/profile.h/usr/include/7.ln-s/usr/kerberos/include/krb5.h/usr/include/8.visrc/gui/text/qfontengine_ft.cpp,注释掉710行9.make(时间4个小时左右)10.makeinstall2编译busybox1.13.41.从。2.修改MakefileCROSS_COMPILE=arm-linux-3.Makemenuconfig选择动态编译,默认配置保存即可4.如果在Redhat2.4虚拟机上编译,需需修改networking/interface.c添加宏定义#defineARPHRD_INFINIBAND325.makeallinstall(使用3.4.1编译器)3建立配置文件1.进入_install目录2.mkdirdevlibtmpproc3.cddev4.mknodfb0c290建立framebuffer设备文件5.mknodts013128建立触摸屏设备文件6.mknodconsolec517.mknodtty0c408.mknodtty1c419.mknodtty2c4210.mknodtty3c43北京顶嵌开源科技有限公司WWW.TOP-E.ORG400-661-5264专注嵌入式Linux技术11.mknodtty4c4412.cdlib13.cp–arf3.4.1/arm-linux/lib/*.14.cp–arfqt-embedded-linux-opensource-src-4.5.1/lib/*.15.应用测试程序拷贝到开发板根目录16.cpqt-embedded-linux-opensource-src-4.5.1/demos/deform/deform.注:命令中引用的路径为相对路径4运行QTE测试程序1.两种方式2.可以用mkcramfs将busybox的_install目录做成文件系统镜像,然后下载3.可以用NFS挂载4../deform–qws屏幕看结果我发现做出来的东西然后写下来一起分享是很快乐的事,哈哈,越写越上瘾了,但毕竟精力有限,干的也比较少,时间总感觉不够用。所以干点写点,还是老话大部分来自网上,里面我就多罗嗦两句。好了不多说了,接着上次触摸屏驱动移植开始写,上次我们把触摸屏给移植了,怎么能用实践来检验呢,来看看我的QT4程序是否能通过触摸屏就可以控制呢,就这个问题我做了一些工作。老样子介绍系统:1.主机系统:ubuntu8.10交叉编译器3.4.5u-boot-1.3.4linux-2.6.26.52.目标系统:s3c24103.首先要让触摸屏很好的工作就先去做校准的工作,这里我们用tslib-1.4,具体的移植过程如下:(1)得到源码包tslib-1.4.tar.gz,上网一搜索就很多,具体就不说了。(2)$cdtslib$exportPREFIX=/home/yoyoili/tslib(这个就是tslib编译以后的安装目录)$exportCC=arm-softfloat-linux-gnu-gcc$./autogen.sh$echoac_cv_func_malloc_0_nonnull=yesarm-linux.cache$./configure--host=arm-linux--prefix=$PREFIX--cache-file=arm-linux.cache$make$makeinstall这样在/home/yoyoili/tslib下面就是我们交叉编译tslib以后产生的必要的文件,主要是头文件和库文件,在移植QT4的时候需要这些文件。(3)在开发板的/home/yoyoili创建tslib目录,将编译好的tslib目录下的lib,etc,bin目录拷贝到这个目录,然后编辑etc/ts.conf,具体内容如下,其他的内容全部删除:我的如下:module_rawinput北京顶嵌开源科技有限公司WWW.TOP-E.ORG400-661-5264专注嵌入式Linux技术modulepthrespmin=1modulevariancedelta=30moduledejitterdelta=100modulelinear注意module_raw前不要有空格!!!!(4)接下来就是测试触摸屏和tslib是否好用了,首先设置环境变量,在开发板上设置:$exportTSLIB_ROOT=/home/yoyoili/tslib$exportTSLIB_TSDEVICE=/dev/event0$exportLD_LIBRARY_PATH=/home/yoyoili/tslib/lib:$LD_LIBRARY_PATH$exportQWS_SIZE=320x240$exportTSLIB_FBDEVICE=/dev/fb0$exportTSLIB_PLUGINDIR=/home/yoyoili/tslib/lib/ts$exportTSLIB_CONSOLEDEVICE=none$exportTSLIB_CONFFILE=/home/yoyoili/tslib/etc/ts.conf$exportPOINTERCAL_FILE=/etc/pointercal$exportQWS_MOUSE_PROTO=Tslib:/dev/event0$exportTSLIB_CALIBFILE=/etc/pointercal这里强烈建议大家写一个脚本来执行,否则我们宝贵的时间就浪费在这上面了!(5)$cd/home/yoyoili/tslib/bin运行:./ts_calibrate,然后在/etc就有个pointercal文件了。这个就是校准后产生的文件,以后我们的QT程序通过触摸屏来控制必须有它的。(6)接下来我们就开始移植我们QT4了,这个我们还是基于以前写的那个QT4移植文档,具体可以看我以前的日志,源码包还是qt-4.4.3的,重新解压然后,如果你的交叉编译器是arm-softfloat-linux-gnu-gcc,请修改源代码的mkspec/qws/linux-arm-g++/qmake.conf。然后修改mkspec/qws/linux-arm-g++/qmake.conf对QMAKE_INCDIR和QMAKE_LIBDIR进行赋值,具体如下:QMAKE_INCDIR=/home/yoyoili/tslib/includeQMAKE_LIBDIR=/home/yoyoili/tslib/lib也就是指定了交叉编译好的tslib的头文件和库的路径而已,然后就开始配置./configure-prefix/home/yoyoili/source/qt/build-release-shared-fast-pch-no-qt3support-qt-sql-sqlite-no-libtiff-no-libmng-qt-libjpeg-qt-zlib-qt-libpng-qt-freetype-no-openssl-nomakeexamples-nomakedemos-nomaketools-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-xplatformqws/linux-arm-g++-embeddedarm-depths16-no-qvfb-qt-gfx-linuxfb-no-gfx-qvfb-no-kbd-qvfb-no-mouse-qvfb-qt-kbd-usb-confirm-license-no-armfpa-no-feature-QWS_CURSOR-qt-mouse-tslibmake如果出现错误,可以重新关掉终端,然后重新解压QT4包,再配置和编译一下。北京顶嵌开源科技有限公司WWW.TOP-E.ORG400-661-5264专注嵌入式Linux技术makeinstall这样我们的/home/yoyoili/source/qt/build就有了我们的QT4的东西了,主要是库文件,在开发板上创建/home/yoyoili/source/qt/build/lib,fonts目录,拷贝相应的库文件到开发板的/home/yoyoili/source/qt/build/lib目录下。libQtCore.so,libQtGui.so.4,libQtNetwork.so.4。向开发板的/home/yoyoili/source/qt/build/fonts/拷贝unifont_160_50.qpf,wenquanyi_120_50.qpf这些字体。这些字体是在编译好的qt的/home/yoyoili/source/qt/build/lib/fonts目录下面,然后拷贝开发板的/home/yoyoili/source/qt/build/fonts/下即可。编写一个设置环境变量的脚本:#!/bin/shexportTSLIB_ROOT=/home/yoyoili/tslibexportTSLIB_TSDEVICE=/dev/event0exportLD_LIBRARY_PATH=/home/yoyoili/tslib/lib:/home/yoyoili/source/qt/build/lib:$LD_LIBRARY_PATHexportQWS_SIZE=320x240exportQTDIR=/home/yoyoili/source/qt/buildexportTSLIB_FBDEVICE=/dev/fb0exportTSLIB_PLUGINDIR=/home/yoyoili/tslib/lib/tsexportTSLIB_CONSOLEDEVICE=noneexportQT_QWS_FONTDIR=/home/yoyoili/source/qt/build/fontsexportTSLIB_CONFFILE=/home/yoyoili/tslib/etc/ts.confexportPOINTERCAL_FILE=/etc/pointercalexportQWS_MOUSE_PROTO=Tslib:/dev/event0exportTSLIB_CALIBFILE=/etc/pointercal[-f/etc/pointercal]||/home/yoyoili/tslib/bin/ts_calibrate//判断是否有校准文件,如果没有,要校准,如果有不用校准!./demo-qws&最近一直在试验如何把自己编译的qt4/qtopia4应用程序移植到ARM开发板上去,今天(2008年11月14日星期五)终于把这条路子走通了,感觉一下子轻松了很多,可以舒一口气了,值得庆祝!以后的事虽很多,但总算心里有点底了,后面的任务应该是如何完善自己开发的系统程序,添加必要的功能。如何在a