天天看點

Mozilla研究—編譯基于GTK+DFB的minimo

Mozilla研究—編譯基于GTK+DFB的minimo

轉載時請注明出處和作者

更新時間: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.24的DFB。

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

           $(TK_LIBS)                     /

else      

                   $(MOZ_JS_LIBS)                 /

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

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

上一篇: GTK