qte qtopia 在龙芯2e处理器上面的移植

   qte qtopia 移植报告
软件环境: OS:RH 9.0 完整安装

交叉编译器:3.2.3(mips)

主机系统: X86
目标系统硬件: MIPS 龙芯2E

简介:
Qtopia是基于qt/embedded程序库编写的应用程序环境,界面优美。主要应用于高端手机,pda等嵌入式系统移植分两步进行。首先移植qte,在PC上它等同于X11/QT,X11/QT上层构建了KDE,直接基于X windows,而qte构建的是qtopia。qte主要是库的移植,直接基于FrameBuffer设备,qtopia是一个图形桌面工具,启动时它将调用qte。 qtopia是QPE新版本改名而来。Trolltech提供三大Qtopia版本:Qtopia手机版,Qtopia PDA版本和Qtopia消费电子产品平台。本文采用的是Qtopia PDA版的免费版本。
 
下载源码包:
ftp://ftp.trolltech.com
最好找个镜象,官方比较慢 我们需要如下几个包
qt-embedded-2.3.7.tar.bz2(下面两个版本的qtopia是基于这个开发包建立的)
qtopia-free-1.7.0.tar.gz(编译时将用到jpeg和libuuid库)
qt-x11-2.3.2.tar.gz(uic)
tmake-1.13.tar.gz(基于perl的makefile工具,在qtopia编译时被调用)
jpegsrc.v6b.tar.gz (jpeg图形支持)
e2fsprogs-1.39.tar.gz(uuid.h libuuid.so)

 -----------------------------------------------------------------------------------------
在进行编译前记得安装好交叉编译器,在这里我们使用的是3.2.3版本的
ftp://192.168.123.99/incoming/GUI/crosstools-3.2.3.tar
将交叉编译器解压到 /opt 目录下面
设置交叉编译器的环境变量
export PATH=/opt/toolchain/bin:$PATH
如果环境变量设置成功,则输入mips 利用tab键应该可以补齐mipsel-linux-gcc等


1、 解压文件,配置环境变量 首先创建一个文件夹,将下载的包都放入该目录下。
#cd /mips
#tar jxvf qt-embedded-2.3.7.tar.bz2
简化目录名长度
#mv qt-2.3.7 qte-2.3.7
设置工作目录
#export QTEDIR=$PWD/qte-2.3.7
#tar -zvxf qt-x11-2.3.2.tar.gz
#export QT2DIR=$PWD/qt-2.3.2
#tar -zvxf qtopia-free-1.7.0.tar.gz
#export QPEDIR=$PWD/qtopia-free-1.7.0

配置tmake
#tar -zvxf tmake-1.13.tar.gz
#mv tmake-1.13 /opt

添加环境变量使tmake可以被找到
#vi /root/.bash_profile
添加:
PATH=/opt/tmake-1.13/bin:$PATH
TMAKEDIR=/opt/tmake-1.13
TMAKEPATH=/opt/tmake-1.13/lib/qws/linux-mips-g++
export TMAKEDIR TMAKEPATH

#source /root/.bash_profile

#tmake -v查看版本,应为1.13,rh9默认有安装,1.7版。如果这步没做,qtopia编译时会出错。 注:网上有些资料里提到要修改tmake.conf。实践发现,在tmake.conf中,把mipsel-linux-gcc改成mipsel-linux-g++,编译Qt/Embedded可以通过,但这样会“污染”了Qt/Embedded的库文件。在以后编译自己编写的Qt/Embedded程序时,会提示找不到stdc++.so的库。因此,不必改动tmake.conf。

2、 接下来交叉安装jpeg库
tar zxvf jpegsrc.v6b.tar.gz 
cd jpeg-6b ./configure --enable-shared
make 得到libtools程序,然后再
./configure --enable-shared
修改生成的Makefile文件:

prefix = /mips/qte-2.3.7
CC= mipsel-linux-gcc
AR= mipsel-linux-ar rc
AR2= mipsel-linux-ranlib


cp -v jconfig.doc jconfig.h
mkdir -pv /mips/qte-2.3.7/man/man1
make
make install
将后面编译用的库文件拷贝到交叉编译器的库中

cp -v /mips/qte-2.3.7/lib/libjpeg.* /opt/toolchain/lib/

3、 编译QT/X11
编译qt-x11的唯一目的就是为编译QTE提供uic(用户接口编译器),uic用来把.ui文件转成.h和.cpp文件.uic是for x86的文件。
#cd qt-2.3.2
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
./configure -no-xft (不配置xt字体)
make && make -C tools/qvfb

4、 编译QT/Embedded
cd qte-2.3.7
export QTDIR=$PWD
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cp -v $QT2DIR/bin/uic bin    (编译qte时将用到uic)
cp -v $QT2DIR/tools/qvfb/qvfb bin
cp -v $QPEDIR/src/qt/qconfig-qpe.h src/tools/ (这里要用到Qtopia的配置文件)

#./configure -xplatform linux-mips-g++ -qconfig qpe -thread -system-jpeg -gif -depths 4,8,16,32 #make sub-src
参数解释:
-xplatform linux-mips-g++,表示需要交叉编译,编译的目标平台是linux-mips-g++。具体可查看XPLATFORM文件。 -qconfig qpe,表示这次编译是为了支持QPE(Qtopia),只会生成QPE所需要的库。 -thread,是否支持多线程。选择后会生成libqte-mt.so库。 -system-jpeg -gif,图形文件支持 -depths 4,8,16,32,支持4,8,16,32位颜色,如只需要16位,则-depths 16,或在./configure询问中输入16 其中lib目录下的libqte.so.2.3.7即是我们需要的qte库,还有一些支持多线程的库。

5、 编译mips的libuuid库
#tar -zvxf e2fsprogs-1.39.tar.gz #cd e2fsprogs-1.39
#./configure -host=mipsel-linux -with-cc=mipsel-linux-gcc -with-linker=mipsel-linux-ld -enable-elf-shlibs -prefix=/usr/tools/mipsel-linux
#make

这里要注意,make install做不做都没意义,file安装目录会发现libuuid库没有体系平台。但查看当前目录下的lib文件夹可以找到libuuid.*,我们手动把它移到交叉编译器相应目录下就可以了。
 
6、 编译Qtopia
#cd qtopia-free-1.7.0 #export QTDIR=$QTEDIR
#export PATH=$QPEDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QPEDIR/lib:$LD_LIBRARY_PATH

#cp -rv /mips/e2fsprogs-1.39/lib/uuid include/
#cp -v /mips/e2fsprogs-1.39/lib/libuuid.a lib/
#cd src #./configure -xplatform linux-mips-g++
#make
如不把e2fsprogs-1.39/lib/uuid和e2fsprogs-1.39/lib/libuuid.a复制到$QPEDIR目录下,则会在编译时出现uuid.h未定义和cannot find -lqtopia的问题。这是由于缺少动态连接库文件所造成的。
-----------------------------------------------------------------------------------------
编译到此告一段落,我们来最后的安装。文件系统以龙2的debian的最小系统为基础ftp://192.168.123.99/incoming/Godson2/rootfs/mini-base-debian-mp3.tar.gz,我们将编译好的qte/qtopia程序和库直接导入龙2文件系统根目录下。
 
假定龙2文件系统需要的库创建目录为/mips/test

1、
#cd qtopia-free-1.7.0 #cp -av {apps,bin,etc,li8n,lib,pics,plugins,include} /mips/test qtopia拷贝好了,下面是qte的库文件,最简单的办法就是直接将qte下的lib直接覆盖到文件系统根目录下。 #cd qte-2.3.7
#mkdir -pv /mips/test/usr/local/qt-embedded/lib

拷贝qt的字体到目标系统的库下面
#cp -av lib/fonts /mips/test/usr/local/qt-embedded/lib

将qt运行时需要的动态库拷贝到目标系统的库下面
#cp -av lib/lib* /mips/test/lib 可能需要创建设备节点
mknod /dev/fb0 c 29 0
2、 现在我们启动系统,内核需要是加载了FrameBuffer设备设备支持的内核 将系统启动后需要输入
qpe >/dev/null 2 >/dev/null 调试信息和错误信息都输入到黑洞里面
,这是我们就能看到welcome to qtopia的欢迎界面了。
键盘暂时还未能找到解决方法,主要原因可能是我们使用了qtopia的PDA版本,即使驱动起来了,也有可能出现键盘映射与物理键不符的情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值