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~~

 

 
原文地址:https://www.cnblogs.com/zhangyunlin/p/6167755.html