您的位置:首页 > 其它

自己动手编译Mozilla Firefox和ThunderBird

2007-01-18 23:57 246 查看


输入您的搜索字词 提交搜索表单
Firefox 和 ThunderBird 分别是Mozilla网络套件中的浏览器和邮件客户端,其中Firefox不使用微软的IE内核,对很多流氓插件具有天生的免疫力,ThunderBird也是集新闻组、RSS、PGP以及反垃圾邮件的等功能于一身的一款优秀的邮件客户端,这些优点使得这两个工具成为Mozilla网络套件中最最受欢迎的两个工具。这两个工具和Mozilla套件中的其它工具一样是开源的,任何人都可以下载它们的源代码研究,如果有兴趣的话还可以加入到这两个工具的开发者行列中。本文目的不是介绍这两个软件的用法,关于Mozilla套件的更详细的介绍可以访问Mozilla的官方网站:www.mozilla.org,本文的目的是介绍如何编译Firefox和ThunderBird。

在Windows平台上编译Firefox 和 ThunderBird 是一件非常痛苦的事情,特别是对于习惯于使用Visual Studio和其它集成开发工具的程序员,这也难怪,这两个软件最初就是在Unix系统下开发的,后来才移植到Windows上。要在Windows平台上编译Firefox 和 ThunderBird,需要准备很多开发工具,首先是要从www.mozilla.org下载源代码,可以通过CVS直接得到正在开发中的代码,通过CVS能实时获取最新的代码,不过有时库里的代码可能编译不过,有时可能会有不稳定,如果只是想编译一个本地稳定版本使用,最好从Mozilla的FTP网站上下载打包的稳定版本源代码下载。编译器首推Microsoft的Visual Studio,包括VC6,VC71(Visual Studio .NET 2003)以及VC8(Visual Studio .NET 2005),我使用VC71,本文介绍的方法都是基于这个开发环境的,但是对于VC8也是适用的。还有一个工具是Cygwin,这个工具的作用是在Windows平台上模拟一个类似于Unix/Linux的shell,因为编译使用的make工具不支持Windows的DOS shell。可以从www.cygwin.com 下载Cygwin,完整的Cygwin大概有1.3G,不过编译Firefox 和 ThunderBird不需要全部Cygwin,只要下载以下几个组件就可以了:

ash -- UNIX-like command line interpreter shell (Base category)
coreutils -- GNU core utilities (includes fileutils, install, sh-utils, and textutils) (Base category)
cvs -- concurrent versions system (Devel category)
diffutils -- file comparison utility (Base category)
findutils (Base category)
gawk -- pattern matching language (Base and Interpretors categories)
grep -- text search tool (Base category)
libiconv -- character set conversion (Devel category) - libiconv2 does not contain the iconv program needed for the installer
make 3.80 -- dependency analyzer for software builds (Devel category)
patchutils -- a small collection of programs that operate on patch files (Devel category)
perl -- a scripting language used to control parts of the build (Interpreters category)
sed -- a search and replace language (Base category)
unzip -- zip file extraction (Archive category)
zip -- zip file creation (Archive category)

根据我的经验,这些组件大概有80多M,除此之外,还有几个其它小工具需要下载,我后面会提到。

下面就开工了,首先准备好代码,然后是安装Cygwin和Visual Studio .NET 2003,以本文为例,安装路径分别是:
Visual Studio .NET 2003 : C:/Program Files/Microsoft Visual Studio .NET 2003
Cygwin : C:/cygwin
代码 : C:/mozilla
除了这几个目录之外,还要准备好一个目录,那就是moztools目录,这个目录可以位于任何一个磁盘,但是名字最好是moztools,本例将这个目录设置为 C:/moztools,这个目录中要放置几个很重要的库文件和头文件,首先是从http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/moztools-static.zip下载moztools-static.zip,然后从ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/historic/src/下载vc71-glib-1.2.10-bin.zip和vc71-libIDL-0.6.8-bin.zip两个文件(因为我使用的是VC71,使用其它版本的VC就下载相应的压缩文件)。得到这几个文件之后将它们解压缩到C:/moztools中,要自己整理一下,将相应的文件分别放在include、bin和lib目录中。准备好这些目录后还要编写两个很重要的文件,一个是启动编译环境(shell)的批处理文件,另一个是编译配置文件。

启动编译环境的批处理文件内容如下:

set HOME=C:/mozilla
set VCVARS=C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat
rem set MSSDK=C:/Program Files/Microsoft Platform SDK
set MOZ_TOOLS=C:/moztools
set CYGWINBASE=C:/cygwin
set CYGWIN=nodosfilewarning

set PATH=%CYGWINBASE%/bin;%PATH%

call "%VCVARS%"

rem set PATH=%MSSDK%/bin;%PATH%
rem set INCLUDE=%MSSDK%/include;%INCLUDE%
rem set LIB=%MSSDK%/lib;%LIB%

set PATH=%PATH%;%MOZ_TOOLS%/bin

rem MS-SDK; MSVC; Cygwin; Windows; glib/libIDL; Moztools

bash --login -i

MSSDK被注释了,因为Visual Studio .NET 2003已经包含了Platform SDK,这个只是对于VC6的设置。将这些内容存储到setvc.bat中,这个名字可以是任意的。另一个是编译配置文件,编译Firefox 和 ThunderBird 需要准备两个不同的配置文件,配置文件名字必须是.mozconfig。编译Firefox的配置文件内容如下:
#. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-Release
mk_add_options MOZ_CO_PROJECT=browser
ac_add_options --disable-installer
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --enable-application=browser
#ac_add_options --enable-optimize=-O2
#ac_add_options --disable-optimize
#ac_add_options --enable-debug
#ac_add_options --enable-static --disable-shared
ac_add_options --disable-static --enable-shared
ac_add_options --disable-tests

编译ThunderBird的配置文件内容如下:
#. $topsrcdir/mail/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/tbird-Release
mk_add_options MOZ_CO_PROJECT=mail,calendar
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --enable-application=mail
#ac_add_options --enable-optimize=-O2
#ac_add_options --disable-optimize
#ac_add_options --enable-debug
#ac_add_options --enable-static --disable-shared
ac_add_options --disable-static --enable-shared
ac_add_options --disable-tests

这中间各个选项的作用可以到Mozilla网站上查,这里只介绍几个重要的,一个是MOZ_OBJDIR,这个是编译后可执行文件的存放位置,以上面的文件为例,生成的可执行文件分别位于C:/mozilla/firefox-Release和C:/mozilla/tbird-Release中。另一个选项是MOZ_CO_PROJECT,编译FireFox需要指定browser,编译ThunderBird需要指定mail。

接下来是将cygwin/bin目录中link.exe改名,因为我们要使用VC的link.exe,还要将windows系统目录中的find.exe改名,因为还是Cygwin的find.exe功能更好一些。还要从http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2下载版本为3.80的make.exe,因为当前的Cygwin已经使用3.81的make.exe,而这个版本的make.exe好像有问题,具体原因可以到Mozilla网站上查看。

最后就是编译代码了,将.mozconfig和setvc.bat复制到c:/mozilla目录中,执行setvc.bat启动shell,在shell中输入:
make -f client.mk build
就可以启动代码编译了,整个过程大概需要50分钟到数个小时不等,这要看你的计算机能力如何了。有一点需要提醒大家,我下载的代码在编译nsMsgTagService.cpp文件时出现错误,我在其中添加了一行代码:
#include "nscore.h"
如果编译没有问题就可以不修改这个文件。此外,还要修改VC平台目录中的wabTags.h文件,可能是unicode的问题,有一些代码被编译器误认为是注释代代码,我在Microsoft网站上也没有查到这个问题的技术支持,我不知道其它版本的VC会不会有这个问题,在这里提醒一下,如果有问题就用一个支持unicode的编译器修改一下wabTags.h文件。

最最后就是查看编译结果了,如果没有问题,就会在MOZ_OBJDIR指定的位置生成版本,这两个软件都不需要安装,直接运行对应的可执行文件就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: