OK6410 QT移植与应用程序开发

 

平台:ubuntu、 arm-linux-gcc4.3.2、 linux2.6.36、 QTSDK1.1.4(windows)、 QT library4.7.4、 QT creator2.3、Tslib1.4、FORLINX_6410_touch.cramfs

 

        首先来了解一下Qtopia QT4等版本的关系,现有流行的几个版本为:Qtopia2.2.0、Qtopia4.4.3、Qt4.7。这几个版本有何区别呢?本人理解如下:Qtopia为桌面系统,就像我们用的ubuntu,里面可以安装很多应用程序,2.2.0和4.4.3为它的两个用的最多的版本。而Qt4.7仅仅只是库文件,用来支持QT4应用程序。但也不能说是包含关系,他们还是有很多区别的,所以不能用Qt4.7编译的程序放到Qtopia下直接运行,而需要重新编译。

        再说一下X86版和ARM版,关系如下:这两个版本源代码是同一套,比如qt-everywhere-opensource-src-4.7.4,它既可以编译出x86版,也可以编译出arm版,只是使用不同的配置。编译出的x86版可以用来编译在x86平台上运行qt4应用程序;而编译出的arm版则用来编译在arm平台上运行的qt4应用程序。而qtopia x86版用来在x86平台上仿真开发的qtopia应用程序,以节省开发时间。

这里我们讨论的仅仅是QT4.7的移植和应用程序的开发。当然,前提是你已有可用的u-boot、linux内核、文件系统。

        由于Qt应用程序将使用触摸屏替代鼠标,因此要先移植Tslib为触摸屏进行校准等工作。Tslib移植步骤可参考《OK6410 QT移植百科全书》,讲解得比较详细。也可直接使用,拷贝到文件系统中。

 

QT4.7.4移植步骤如下:

1.     下载qt-everywhere-opensource-src-4.7.4.tar.gz

      QT官网下载。

2.     新建一个自动编译脚本(参考飞凌开发板资料)

      vim build-all

      脚本内容如下:

 

    #/bin/bash

    export PATH=/usr/local/arm/4.3.2/bin:$PATH

    exportPKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi

    export TB_CC_PREFIX=arm-linux-

    export TOOLCHAIN=/usr/local/arm/4.3.2

    rm -fr qt-everywhere-opensource-src-4.7.4

    rm -fr /opt/qt-4.7.4-arm

    tar xfvz qt-everywhere-opensource-src-4.7.4.tar.gz

    cd qt-everywhere-opensource-src-4.7.4

    echo yes | ./configure -opensource-embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -prefix /opt/qt-4.7.4-arm   -I /usr/local/tslib/include -L/usr/local/tslib/lib

    make 2>&1 | tee ../qte4.7.1Makelog&& make install


 

        第3-9行指定交叉编译器为arm-linux-gcc4.3.2并设置其环境变量。

        第11-13行移出上次编译的文件夹和文件。

        第15-17行解压缩,并切换目录。

        第19行配置,这里配置成arm平台,-prefix后为安装目录,-I –L为目标板Tslib目录,即上面将Tslib拷入文件系统的目录。(若需编译x86版则使用另外的配置)

        第21行编译、安装(需要root权限,若不是使用root登录可使用sudo make && sudo makeinstall重新安装)

3.     运行脚本,等待安装完成。

        这步需要耐心等待,编译安装时间较长,几个小时……

4.     将安装完成的目录复制进文件系统相同目录下。

 

QT4应用程序开发步骤如下:

1.     下载QTSDK1.1.4(windows)

        可以到QT官网下载,并安装,相信这一步不需要多做介绍。记得是windows版,这样,我们可以先在windows下调试我们的QT应用程序。当然,如果你是直接在linux下调试,就直接安装linux版的就好。步骤2也可以略过了。

 

2.     安装QT creator(linux)

        下载QT creator安装文件,记得是.bin格式的,如果下的是源码,还得重新编译…而前者可以直接安装。
        安装完成之后,添加qmake,在工具-->选项-->QT4-->添加,选择我们上面移植的QT4.7库/opt/qt-4.7.4-arm/bin,选中qmake。
        添加工具链,工具-->选项-->工具链-->添加,选择交叉编译工具,即arm-linux-gcc4.3.2。
        这样载入工程后点击构建就可以交叉编译应用程序了。

 

3.     编写QT4应用程序

        利用安装好的QT creator编写应用程序,并在x86平台上调试通过。

 

4.     交叉编译应用程序

       将编写好的工程文件拷贝到Linux下,用第二步建立好的交叉编译平台,编译此程序。即产生了arm平台可执行文件。

       其中设置可能需要修改,包括qmake、工具链、目标文件目录。

 

5.     移植到arm平台

       将编译好的QT库文件(即第二步编译安装的,目录/opt/qt-4.7.4-arm)拷入文件系统中相同目录下,并将交叉编译好的应用程序拷入qt-4.7.4-arm目录下。

 

6.     编写开机运行脚本

       在/bin目录下新建脚本

       vim myqt4application

       内容如下:

      

#!/bin/sh

export TSLIB_ROOT=/usr/local/tslib

export TSLIB_TSDEVICE=/dev/input/event1

export TSLIB_TSEVENTTYPE=H3600

exportTSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf

exportTSLIB_PLUGINDIR=/usr/local/tslib/lib/ts

#export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CALIBFILE=/mnt/disk/pointercal

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export QTDIR=/ opt/qt-4.7.4-arm

export QT_QWS_FONTDIR=/opt/qt-4.7.4-arm/lib/fonts

exportLD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/qt_plugins/imageformats/:$QTDIR/lib:/root/tslib/build/lib:$LD_LIBRARY_PATH

export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/root/tslib/build/bin

if [ -c /dev/input/event1 ]; then

       export QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}"

       if [! -s /mnt/disk/pointercal ] ; then

                rm /mnt/disk/pointercal

                /usr/local/tslib/bin/ts_calibrate

       fi

else

       export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"

       > TSLIB_CALIBFILE

fi

export QWS_KEYBOARD=TTY:/dev/tty1

FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)

#exportQWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"

case "$FB_SIZE" in

800,480)

exportQWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"

;;

480,272)

exportQWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"

;;

*)

exportQWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"

;;

esac

#export QWS_DISPLAY=:1

export HOME=/mnt/disk/QtE4Home

cd /opt/qt-4.7.4-arm

./myqt4application–qws

        第3-21行设置有关tslib环境变量。

        第23-29行设置有关qt4环境变量,这里增加了QT_QWS_FONTDIR环境变量的设置,不然可能导致以下错误:

QFontDatabase:Cannot find font directory /usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts

        - is Qt installed correctly?

        第31-49行判断用户是使用触摸屏还是鼠标设备,并使用不同的配置,这里需要说明的是:在OK6410配套文件中,这里设置得不对,会导致触摸屏没有反应! 其中-c表示文件存在且为字特殊文件时为真(/dev/input/event1为触摸屏设备,在linux3.0中为event2),-s表示文件存在且大小不为零时为真。

        第83-85行切换到应用程序目录并运行。

 

7.     修改/etc/init.d/rcS

        最后一行修改为:/bin/ myqt4application&

 

整个过程就如上所述,其中还是有很多问题需要解决,例如移植到arm平台不能显示中文字体。以后再讨论。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值