移植Qtopia Core OpenSource 4.3.3到ARM9+Llinux平台(已测)

移植Qtopia Core OpenSource 4.3.3到ARM9+Llinux平台

发表于 2008-11-13 12:59:52

 

http://hi.baidu.com/bbps/blog/item/5a8abdde9f75c45fcdbf1ae5.html

移植Qtopia Core OpenSource 4.3.3到ARM9+Llinux平台

步骤一: 下载qtopia的开源代码

可以到下面的网址下载,第一个网址会快很多,建议用第一个地址。
      http://www.qtcn.org/download/qtopia-core-opensource-src-4.3.3.tar.gz
ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-4.3.3.tar.gz

步骤二: 编译
      1. 编译前确保ARM-linux系统的交叉编译器已安装,最好是用3.4.1版本的,2.95.3的太老了,估计编译不过。解压缩交叉编译器,假如编译器放在usr/local/arm/3.4.1下;
    # vi ~/.bashrc 或vi /etc/profile
      在文件的末尾加上这句:PATH=$PATH:/usr/local/arm/3.4.1/bin
    #source ~/.bashrc 重启机器
      2. 把下载的源代码放到linux操作系统下任意文件夹.
         解压缩: tar –xzvf qtopia-core-opensource-src-4.3.3.tar.gz
        下一步肯定是编译了,呵呵 先别忙,源代码有需要该的地方,因为基本上所有的开发板都是带触摸屏的,所以要让源代码支持,实际上就是加上2个宏定义,很简单的。
         打开qtopia-core-opensource-src-4.3.3/src/gui/embedded/qmouselinuxtp_qws.h
          加上这2行:#define QT_QWS_IPAQ
                      #define QT_QWS_IPAQ_RAW
         还有需要注意的地方是:看一下 qmouselinuxtp_qws.cpp /dev/h3600_tsraw, 是不是你板子上的驱动文件名字,如果不是改成一样就可以了。
      3 编译:
        根据自己的需要配置一下,告诉源代码你需要那些功能,这里就简单配置一下:
       # ./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,12,16 -no-qt3support -qt-mouse-linuxtp
        稍微等待一下,然后
       # gmake
        可以去干点别的事了,时间会比较久,这个时间和机器配置和上面的configure有关系的
       # gmake install
        编译完成后,软件会安装在 /usr/local/Trolltech/Qtopia Core-4.3.3-arm/
步骤三:移植
       只要把刚才编译的库文件,字体放到文件系统里面就可以了
       具体操作:在文件系统下新建一个文件夹,我是放到已经有的一个文件夹/opt/qt/下的
       #cd opt
       #mkdir qt
       把/usr/local/Trolltech/Qtopia Core-4.3.3-arm/下的lib文件夹复制到opt/qt/下,复制前看下大小,你的flash是否放得下,我得flash是64M的,没问 题。再在opt/qt下建立一个文件夹 qtopia,可以把你的应用程序放到这个里面。
       QT运行环境的设置,建一个脚本文件qtopia_setup,放到/bin下吧。
      # vi qtopia_setup 打开后加入下面的配置信息
       export set HOME=/root
export set QTDIR=/opt/qt
export set QPEDIR=/opt/qtopia
export set KDEDIR=/opt/qt
export set QWS_KEYBOARD="USB:/dev/input/event1"
export set QWS_MOUSE_PROTO="linuxtp:/dev/h3600_tsraw"
export set PATH=$QPEDIR/bin:$PATH
export QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"
export QWS_SIZE=320x240
export set LD_LIBRARY_PATH=$PATH:$QTDIR/lib:$QPEDIR/lib

如果要开机运行QT程序的话,在上面的末尾加上
$QPEDIR/qttest -qws &
把qttest这个程序放在/opt/qt/qtopia下,可以从/usr/local/Trolltech/Qtopia Core-4.3.3-arm 的demo下随便拷一个过来,改个名字就可以了。
然后,在/etc/init.d/rcS里面加上这句:/bin/qtopia_setup
Linux启动的时候会自动运行rcs
步骤四:运行   
把新的文件系统发放到开发板上,上电就可以运行了,但不幸的是有提示错误。
在/usr/local/Trolltech/Qtopia Core-4.3.3-arm/lib/fonts 找不到字体库,解决办法很简单,在你的板子上建立这个文件夹,然后把/opt/qt/lib/fonts下的字体文件移动到你建的文件下:/usr /local/Trolltech/Qtopia Core-4.3.3-arm/lib/fonts 下就可以了。
再重启板子,或直接运行/bin/qtopia,这下就可以看到你的图形界面了吧 ,^_^!
界面上有个鼠标指针,程序中可以把它搞掉,你再点点触摸屏,可能会点不准,那是因为你还没有校准触摸屏,程序运行的时候,也会提示找不到/etc/下的校正参数,所以你需要下载一个校正程序来用 如:tslib-1.3.tar.bz2,这部分我还没搞定,有时间再弄。

     QT4已经出来很长一段时间了,很多开发板上还是QT2的,用过一段时间的QT3,但是我还是推荐使用QT4,因为它实现了真正的跨平台,我在 WINDOWS下写的QT程序一点不用改动,直接拷到linux下,编译一下就可以运行了,再交叉编译一下,板子上也能运行,只要不涉及到硬件驱动的调 用。
     这段时间把VC丢下了,准备主要学习QT4编程,推荐一本书:《C++ GUI Qt4 编程(第二版)》,QT中文论坛:http://www.qtcn.orghttp://www.qtopia.org.cn
     移植后发现一个问题,WINDOWS下能显示的中文,在板子上却显示的乱码,这需要在程序上稍微加一点东西,大多数人的GUI都是带又中文显示的吧?所以举个例子,大家可以再板子上跑跑看
#include <QApplication>
#include <QPushButton>
#include <QTextCodec>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QFont f;
f.setFamily("wenquanyi");
f.setPointSize(5);
QTextCodec *code=QTextCodec::codecForName("GBK");
QString uniStr=code->toUnicode("中文");
QPushButton hello(uniStr);
hello.setFont(f);
hello.setText(uniStr);
hello.resize(100, 30);
hello.show();

return app.exec();
}
用WINCE 确实没有用linux麻烦,但是microsoft的东西都是要米的,一个产品要你几十大米,怎么受的了!米很多,量又大的话用WINCE也不错,米少又 喜欢open source的话,可以用LINUX + QT4啊 ^_^ 呵呵! 也可以WINCE+QT4,但是我自己觉得没有必要。
这是我移植的时候新的体会,如果写得有错误得地方,请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值