首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > Mozilla研究—编译基于GTK+DFB的minimo
【标  题】:Mozilla研究—编译基于GTK+DFB的minimo
【关键字】:Mozilla,GTK+DFB,minimo
【来  源】:http://blog.csdn.net/absurd/archive/2007/02/26/1515293.aspx

Mozilla研究—编译基于GTK+DFB的minimo

Mozilla研究—编译基于GTK+DFB的minimo

 

转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd

作者联系方式:Li XianJing <xianjimli at hotmail dot com>

更新时间:2007-2-26

 

mozilla是一个以浏览器为中心的软件平台,它在我们平台中占有重要地位。我们用它来实现WEB浏览器、WAP浏览器、邮件系统、电子书和帮助阅读器等应用程序。为此,我最近花了不少时间去阅读mozilla的代码和文档,我将写一系列的BLOG作为笔记,供有需要的朋友参考。本文重点介绍编译基于GTK+DFB的minimo的方法。

 

Minimo是mozilla为移动设备定制的一款浏览器,由于它基于mozilla那套软件平台,它所要求硬件资源仍然较高(共享库版本约18M,静态版本约10M)。之所以说是为移动设备定制的,是因为它为小屏幕设备做了一些修改,而不是因为它真的小巧玲珑。

 

慎重考虑后,我们决定采用minimo作为WEB浏览器和WAP浏览器,但是由于我们的GUI是基于DFB的GTK+,而当时发现基于GTK+的minimo还依赖于X Window。不过,经过分析后,我们认为移植minimo到基于DFB的GTK+上是可行的,但是工作量有点大。本来计划今天年初开始移植,幸运的是,前段时间发现已经有人完成了这项移植工作,只是和我们的情况有点出入:

1.       他们的DFB的版本是0.9.25的,而我们的是0.9.24的。

2.       他们的GTK+的版本是2.10的,而我们的是2.6的。

3.       他们是针对firefox 1.5的,而我们要的是minimo。

 

同时由于:

1.       mozilla规模庞大,编译时间很长,我在虚拟机编译编译更慢,遇到问题后要重新编译,耗费了我不少时间。

2.       mozilla相当复杂,涉及的技术也较多,解决遇到问题也不是那么简单。

 

由于以上和其它一些原因,编译minimo不是很顺利。下面我详细介绍编译基于GTK+DFB的minimo的过程。

 

1.         下载软件包。

www.mozilla.org下载firefox-1.5.0.3-source.tar.bz2

https://bugzilla.mozilla.org/show_bug.cgi?id=357946下载TEL_Moz_Dfb_1_5_0_3_Nov17_patch1.dat

 

2.         打补丁。

tar jxvf firefox-1.5.0.3-source.tar.bz2

cd firefox-1.5.0.3

patch -p0 <../TEL_Moz_Dfb_1_5_0_3_Nov17_patch1.dat

 

3.         修改Makefile.in

tier_99_dirs    += embedding/minimo minimo

-->

tier_99_dirs    += embedding/minimo

 

4.         修改configure,使用0.9.24DFB

0.9.25-->0.9.24

 

5.         修改widget/src/gtk2/nsWindow.cpp

gdk_atom_intern_static_string

-->

gdk_atom_intern

 

6.         修改gfx/src/gtk/mozilla-decoder.cpp,原因是GTK+2.6没有用cairo

#include <pango/pangocairo.h>

-->

#include <pango/pangoft2.h>

 

pango_cairo_font_map_get_default

-->

pango_ft2_font_map_for_display

 

7.         修改embedding/minimo/app/Minimo.cpp

(MinimoBrowser *)(dialogParams->main_combo) = browser;

->

dialogParams->main_combo = (GtkWidget*)browser;

 

8.         修改embedding/minimo/app/Makefile.in

EXTRA_LIBS  += -L$(DEPTH)/dist/lib/components \

                   $(EXTRA_DSO_LIBS)              \

                   $(STATIC_EXTRA_LIBS)           \

                   $(MOZ_JS_LIBS)                 \

                   $(MOZ_COMPONENT_LIBS)          \

                   -lSM -lICE                     \

           $(TK_LIBS)                     \

           $(NULL)

-->          

ifndef TELTEL_MOZ_DFB

EXTRA_LIBS  += -L$(DEPTH)/dist/lib/components \

                   $(EXTRA_DSO_LIBS)              \

                   $(STATIC_EXTRA_LIBS)           \

                   $(MOZ_JS_LIBS)                 \

                   $(MOZ_COMPONENT_LIBS)          \

                   -lSM -lICE                     \

           $(TK_LIBS)                     \

           $(NULL)

else      

EXTRA_LIBS  += -L$(DEPTH)/dist/lib/components \

                   $(EXTRA_DSO_LIBS)              \

                   $(STATIC_EXTRA_LIBS)           \

                   $(MOZ_JS_LIBS)                 \

                   $(MOZ_COMPONENT_LIBS)          \

           $(TK_LIBS)                     \

           $(NULL)

endif

 

9.         设置minimo的版本号。

echo 1.5 >embedding/minimo/wince/version.txt

 

10.     修改intl/uconv/native/Makefile.in

ifeq ($(OS_ARCH), UNIX)

-->

ifeq ($(OS_ARCH), Linux)

 

11.     编辑编译选项文件.mozconfig,其内容如下:

LIBS=-lsupc++

mk_add_options MOZ_CO_PROJECT=browser

ac_add_options --enable-application=minimo

 

ac_add_options --enable-default-toolkit=gtk2

ac_add_options --disable-pedantic

ac_add_options --without-x

ac_add_options --disable-gtktest

ac_add_options --disable-tests

ac_add_options --enable-pango

ac_add_options --disable-xft

ac_add_options --enable-extensions=default

ac_add_options --disable-xinerama

ac_add_options --enable-directfb

ac_add_options --without-system-nspr

ac_add_options --disable-mailnews

ac_add_options --disable-composer

ac_add_options --disable-ldap

ac_add_options --disable-xprint

 

ac_add_options --disable-accessibility

ac_add_options --disable-postscript

ac_add_options --disable-mathml

ac_add_options --disable-jsd

ac_add_options --disable-jsloader

ac_add_options --disable-installer

ac_add_options --disable-xpfe-components

ac_add_options --disable-necko-disk-cache

ac_add_options --disable-plugins

ac_add_options --enable-necko-small-buffers

ac_add_options --disable-dtd-debug

ac_add_options --disable-logging

ac_add_options --enable-necko-protocols=http,file,res

ac_add_options --disable-xpcom-obsolete

ac_add_options --enable-optimize=-Os

ac_add_options --enable-strip

ac_add_options --enable-plaintext-editor-only

ac_add_options --disable-mailnews

 

12.     配置并编译

./configure; make; make install

 

附:

如果出现cannot restore segment prot after reloc: Permission denied的问题,可以用下列方法解决:

1. 使用chcon 命令

示例: chcon -t texrel_shlib_t dist/lib/*.so

2. 禁止掉SELinux

更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled

 

~~end~~

 

 
我的软件测试--悲哀~~~~~!!!:【上一篇】
Linux ALSA sound notes(转载):【下一篇】
【相关文章】
  • Mozilla研究—深入理解mozilla所需的背景知识
  • Mozilla研究—mozilla能为我们做什么
  • Ajax: IE and Mozilla Errors you need to know about
  • 把应用程序从 Internet Explorer 迁移到 Mozilla
  • 配置JRE和Mozilla之间的关联
  • Mozilla
  • Adobe向Firefox捐献源代码 与Mozilla共同管理
  • Adobe将flashplayer的虚拟机源代码捐献给Mozilla基金会
  • Mozilla XULRunner 的编译。
  • mozilla中javascript读取中文文件解决办法
  • 【随机文章】
  • 在delphi中调用tcl脚本程序2
  • "东临长江"有感
  • 关于SNMP_INC_STATS_BH的困惑
  • 用Visual Basic开发数据库浏览器
  • [原创]编写正确的线程同步——Boost::thread::condition全方位观察
  • oracle数据库如何将表空间导入导出
  • 介绍一个完全托管代码的对象数据库DB4O
  • Jboss4.0.2的端口的修改
  • Slackware安装包全系列说明
  • Spirng Web Flow 1.0 RC1 发布并乱弹一下 Shale
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.