Mozilla XULRunner 的编译。

<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>

Mozilla XULRunner 的编译。
潘李亮 2006-10-31


Mozilla里有很多好东西。 比如那个js引擎和嵌入式渲染引擎。
这段时间在想如果能在游戏里嵌入一个浏览器该多好啊。这个想法用mozilla的渲染引擎来实现在再好不过的了。
Mozilla的渲染引擎叫xulrunner。它和firefox 用的是同一个代码树,也就是说在编译的时候指定不同的选项就可以编译出xulrunner和firefox。
Xulrunner以前叫gecko。这个东西在官方可以下到sdk。不过sdk里少头文件。只有可执行的dll。没办法只能自己编译了。在linux 编译是非常简单的事情./configure & make & make install 基本上就OK了。在 windows下就比较麻烦。现在我来分享一下我编译xulrunner的体会。
第一步:下载
下载可以选择下载任何一个完整的mozilla代码包。我下的xulrrunner的。下下来后解包到一个目录里。这个目录最好不要包含空格等非字母字符。我放到了 C:\mozilla 。 反正编译后就删除了。无所谓的。
xulrunner的地址:
ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.0.4/source/xulrunner-1.8.0.4-source.tar.bz2

第二步:了解编译策略
进入mozilla的代码目录后,你会发现有一个client.mk和一个configure。在linux下运行./configure 会生成一个makefile。这个是很经典的做法。给configure脚本指定参数可以指定编译出什么产品。比如是xulrunner还是firefox等。但是mozilla 不推荐自己用./configure。而是使用.mozconfig文件。注意这个文件前面有个点。需要在windows的命令行 中才可以创建出前面带点的文件。直接按f2重命名是不行的:-(。在这个文件里,我们可以指定要编译出什么东西和编译的选项已经输出的目录,因为我们要编译的是xulrunner。所以我的.mozconfig是这么写的:
mk_add_options MOZ_CO_PROJECT=xulrunner
ac_add_options --enable-application=xulrunner
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-opt-xulrunner-small
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --disable-static
ac_add_options --enable-shared
ac_add_options --disable-ldap
ac_add_options --disable-mailnews
ac_add_options --enable-extensions=default
ac_add_options --enable-crypto
ac_add_options --disable-composer
ac_add_options --enable-single-profile
ac_add_options --disable-profilesharing
ac_add_options --disable-profilelocking
ac_add_options --disable-accessibility
ac_add_options --enable-jsd
ac_add_options --disable-installer
ac_add_options --enable-xpinstall
ac_add_options --disable-postscript
ac_add_options --disable-mathml
ac_add_options --enable-xpfe-components
ac_add_options --disable-dtd-debug
ac_add_options --disable-logging
ac_add_options --disable-tests
ac_add_options --enable-necko-protocols=http,file,about,res,jar,data
ac_add_options --enable-image-decoders=png,gif,jpeg
ac_add_options --enable-svg
ac_add_options --enable-svg-renderer=gdiplus
ac_add_options --disable-javaxpcom
ac_add_options --disable-activex
ac_add_options --disable-activex-scripting
ac_add_options –enable-canvas

其中mk_add_options MOZ_CO_PROJECT=xulrunner 和ac_add_options --enable-application=xulrunner 指定编译xulrunner,如果改成firefox、就可以编译出firefox。具体可以 参见mozilla的build指南。
下面的mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-opt-xulrunner-small 指定输出路径。
而这两条
ac_add_options --enable-optimize
ac_add_options --disable-debug
是说要编译release版本。打开优化,如果你想编译debug版本可以改改这两条.
OK. 到目前为止,Mozilla的代码是配置好了。

第三步:编译工具之 moz tools
在windows下要用VC编译mozilla。必须安装这个东西,请下载
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/moztools-static.zip
把这个工具解开后放到一个地方。比如c:\moztools。应该在moztools下有bin , include ,lib目录。
然后编译的时候还需要几个库,这两个库是VC没有的,所以要下:
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/historic/vc71/vc71-glib-1.2.10-bin.zip
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/historic/vc71/vc71-libIDL-0.6.8-bin.zip
解压后,把vc71目录里的bin , include , lib目录拷贝到和moztools一起,
目录名不是必须为C:\moztools。这个目录必须和后面的Cygwin的启动脚本一致就可以了。也就是说这个目录名是通过环境变量输出的。
另外一点需要注意的是,VC8编译mozilla会有问题。只能用vc71。


第四步:编译环境之 Cygwin。
可能很多人觉得这个麻烦。没办法。Mozilla只能用它编译。逃不了。必须装这个!!
下载Cygwin的时候,必须下的几个包是make , unzip , zip , perl , patchutils 。 我习惯把cygwin装在c:\cygwin这个地方。
这里是Cygwin的下载地方http://www.cygwin.com/
Cygwin现在默认的make是3.81,这个版本的make没法编译mozilla。要改成3.80的。我们可以google一个3.80的make。然后把c:\cygwin\bin下的覆盖掉。
还有一个需要注意的是,cygwin\bin下有一个link.exe。这个会和vc的link冲突
解决办法就是把这个link.exe 改名,比如改成glink.exe。必然在make的时候会报告link 工具版本不匹配。
OK。Cygwin到目前为止装好了。现在要给Cygwin指定环境变量。
C:\cygwin的目录下有一个cygwin.bat。我们可以修改这个.bat 。
首先,要指定步骤三里的moztools路径和那几个VC用到的库的路径
SET MOZ_TOOLS=C:\moztools
SET GLIB_PREFIX=C:\moztools
SET LIBIDL_PREFIX=C:\moztools
SET CYGWINBASE=C:\cygwin
然后别忘记了调用VC的环境变量,
CALL D:\MSVCNET7\Vc7\bin\vcvars32.bat //具体看你自己的vc装在什么地方
然后别忘记了设置其他的环境变量
SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%;%MINGWBASE%\include
SET LIB=%GLIB_PREFIX%\lib;%LIB%
SET PATH=%PATH%;%MOZ_TOOLS%\bin

整个cygwin.bat 看上去是这样的:
@echo off
SET MOZ_TOOLS=C:\cygwin\moztools
SET GLIB_PREFIX=C:\cygwin\moztools
SET LIBIDL_PREFIX=C:\cygwin\moztools
SET CYGWINBASE=C:\cygwin
rem --- Clean slate start
SET INCLUDE=
SET LIB=
SET PATH=C:\;C:\windows\system32;C:\windows;C:\windows\system32\wbem

rem --- Then prepend Cygwin path
SET PATH=%CYGWINBASE%\bin;%PATH%

rem --- Set VC7 compiler environment vars copy the VC7/bin/vcvars32.bat outside
CALL D:\MSVCNET7\Vc7\bin\vcvars32.bat

rem --- Add glib/libidl to build environment
SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%;%MINGWBASE%\include
SET LIB=%GLIB_PREFIX%\lib;%LIB%

rem -- moztools comes last after glib/libIDL
SET PATH=%PATH%;%MOZ_TOOLS%\bin

C:
chdir C:\cygwin\bin
bash --login -i

OK. 到这里为止,所有的环境都建立好了。
双击刚才写好的cygwin.bat。然后出来Cygwin 的控制台,进入mozilla的代码目录,敲入以下命令:
make -f client.mk build
等待。。。大约一个到两个小时不等。
编译完成后在你指定的输出路径下会有一个dist目录,这个就是你需要的xulrunner的sdk。
Release版本的大概为200M。Debug版本有600M ....我的天。




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1360862


你可能感兴趣的:(C++,c,C#,vc++,firefox)