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

    技术2022-05-11  53

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

     

     

    最新回复(0)