嵌入式浏览器Konqueror/E的实现 (2)

2010-09-01 21:10:31   作者:陆云昆 余键 赵力 邹采荣    来源:电子产品世界   

关键字:Konqueror 嵌入式浏览器 ARM-Linux 移植 汉化

    图6所示编译QT/E完成后,在QT/E的lib目录下会生成libqte.so.2.3.7库文件。

 

3.3 图形界面Qtopia的编译

准备文件:

    Qtopia 是基于QT/E的图形界面应用程序集,通过Qtopia真正地将图形界面展现在用户的眼前。如果说QT/E是灵魂,那么Qtopia就是肉体。而Konqueror/E在一般情况时是在Qtopia环境下运行的,所以要用到Qtopia库。也有少数情况时用不到,也就是说系统启动的时候只运行Konqueror/E。那么只要在编译Konqueror/E的时候配置稍作修改即可,本文只介绍前者。

    在编译QT/E的时候已经将Qtopia的配置传递给了QT/E,因此编译Qtopia时就非常容易了:
cd qtopia-free-1.7.0/src
./configure  -xplatform linux-arm-g++
make

    这样在bin目录下会生成一组应用程序集,在lib目录下产生了一系列的Qtopia库,给Konqueror/E的编译做准备。

3.4 Konqueror/E的编译和安装

准备文件:

    经过实践证明上面版本的Konqueror/E比较稳定,因此我们选择了该版本的源文件进行编译。

3.4.1 Konqueror/E的编译

    在编译Konqueror/E之前,必须将QT/E和Qtopia的路径指定给编译器。这样编译器才能找到相应的库,从而为Konqueror/E提供相应的库文件。


图7.1  设置环境变量

    如图7.1所示,先要设置一些必要的环境变量,然后再按照图7.2配置和编译Konqueror/E。当然在编译配置时,这些配置选项都是有各种含义的。有些配置选项不能搞错,不然就会编译不通过,甚至有时候连配置都不能完成。比如QT/E路径指定不对就会在配置时出错,这些都需要在实际的移植过程中才能体验到的。

图7.2 配置和编译Konqueror/E

3.4.2 Konqueror/E的安装

    在Konqueror/E编译完成之后,目录下会生成相应的可执行文件。因此Konqueror/E的安装主要是指将可执行文件和一些其他的配置文件拷贝到嵌入式系统的文件系统中去就行了。一般来说,Konqueror/E运行需要五个文件,图8描绘了这五个文件的原来所在路径和安装到目标板的路径,这些都要手动去拷贝。

 
图8  文件的原来所在路径和安装到目标板的路径

    当然在目标板上运行Konqueror/E之前,必须指定几个环境变量,否则Konqueror/E会找不到库文件而终止运行。图9设置了这些环境变量,并运行Konqueror/E。

    至此,Konqueror/E已经安装完毕。但是Konqueror/E缺省情况下是不支持中文网页的,而且界面是英文的。某些情况下为了满足特定的需要,这两者是非常必要的。因此在下一小节里边介绍了Konqueror/E的汉化和支持中文。

3.5 Konqueror/E的中文化

    Konqueror/E的中文化可分为两个部分: 一个是Konqueror/E本身控制界面的汉化;另一个是Konqueror/E对中文网站的访问支持。和其他基于Qt 的应用程序一样, Konqueror/E中对所有用户可见的文本使用tr()将文本标识出来。这样利用Qt 提供的翻译工具将很容易把这些文本转化成所需要的语言,同时Qt 提供了两个宏:QT_ TR_NOOP ( ) 和QT_ TRANSLATE_ NOOP ( ) 。

    用它们标示出文本,以便于被lupdate 工具提取。具体操作步骤如下:
(1)在需要翻译源码的XXX. pro 中加入一项: TRANSLATIONS = XXX. t s。
(2)运行lupdate XXX. pro ,生成XXX. t s 文件。该工具识别出t r () 结构和上面描述的QT_ * _NOOP 宏,产生. t s 文件(通常每种语言一个) 。
(3)运行lrelease XXX. pro 将生成XXX. qm。这是一个没有翻译成其他语言的. qm 文件(也可以用Qt Linguist生成) ,可以把它改名为XXX_en. qm。
(4)启动Qt Linguist 将XXX. t s 文件导入,将需要翻译的内容翻译成中文。翻译完成之后, 点击File →Re2lease ,将文件保存为XXX_zh. qm。
(5)翻译文件保存之后, 在程序源码中需要构建Qt ranslator 实例,利用Qt ranslator 将翻译文件加载到图形界面上。

图10   Konqueror/E的中文化

    在Konqueror/ embedded 中可以通过修改main. c 中的这段代码来实现UI 的汉化:

    由于QT/E是可以支持Unicode编码的,因此Konqueror/E也可以支持中文。但是在编译QT/E的缺省配置中是不支持Unicode的,因此我们要手动修改qconfig-qpe.h文件的配置:

    注释掉38行,#define QT_NO_CODECS。

    这样修改完毕以后,重新开始编译QT/E以及Qtopia和Konuqueror/E,Konqueror/E就能接受Unicode编码的汉字了。但是要在Konqueror页面上显示,就必须要有相应的字体,因此对Konqueror/E源代码中/konq-embed/dropin/ kglobalsettings.cpp文件进行修改:

    将"helvetica"改为"unifont"后重新编译Konqueror/E,这样Konqueror/E中就能显示中文字体的页面了。

4 小结

    本文对嵌入式浏览器Konqueror/embedded技术核心做了简要分析,阐明了该浏览器的先进性与可扩展性,而且该浏览器是开源的符合GNU条款的自由软件。因此对Embedded-Linux下嵌入式浏览器的使用者来说,Konqueror/embedded无疑是一个最佳选择。但是在Konqueror/embedded移植到实际使用系统中,存在一系列的问题。如果说没有移植经验的人就会觉得完全无从下手,本文除了移植Konqueror/E以外还完成了Qtopia的移植。因为本文最终达到了在图形界面Qtopia上运行Konqueror/E。

    笔者结合了实际的移植经验,详细地说明了整个移植步骤。将理论与实际结合起来,而不是纸上谈兵。因此本文对嵌入式浏览器的移植有着非常重要的实际意义,同时也希望能给浏览器开发者和使用者们带来参考价值。

[1] [2]
相关阅读
Linux可加载内核模块机制的研究与应用 2012-03-31
如何移植Linux到晶心平台 2012-03-31
基于TQ2440和Linux的触摸屏的驱动研究 2012-03-29
Linux操作系统目录配置标准FHS详细介绍 2012-03-27
嵌入式Linux实时技术改进与实现 2012-03-26
基于Framebuffer的嵌入式GUI系统实现 2012-03-26
嵌入式Linux下Qt/Embedded应用关键技术研究 2012-03-26
基于Xscale的PC/104 Linux系统构建 2012-03-23
多处理器下的硬实时操作系统研究 2012-03-21
基于嵌入式Linux 的移动终端的软件设计 2012-03-20
基于嵌入式Linux的接口转换卡设计 2012-02-24
编辑:金海
本文引用地址: http://www.eeworld.com.cn/qrs/2010/0901/article_3099.html
[发表评论]
[加入收藏]
[告诉好友]
[打印本页]
[关闭窗口]
[返回顶部]
[RSS订阅]
小广播
最热点击
专栏
向农,EEWORLD副总编。被英特尔董事长贝瑞特称为“中国可与之对话的两名记者之一”

【详细】

总编随笔
汤宏琳,人皆称为“汤汤”,电子工程世界高级编辑。随着EEWORLD一起成长。

【详细】

汤汤手记
今年,是中国集成电路产业丰收的一年,相比较往年都有大幅提升。

【详细】

凯哥博客
论坛精华
精选博文