Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192547
  • 博文数量: 111
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 1240
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-07 07:46
文章分类

全部博文(111)

文章存档

2015年(2)

2014年(1)

2011年(1)

2010年(7)

2009年(100)

我的朋友

分类: LINUX

2009-08-08 08:10:32


转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/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. 下载软件包。

到下载firefox-1.5.0.3-source.tar.bz2。

到下载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

-->
#include


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

阅读(435) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~