源代码编译安装Firefox(linux下)
http://forums.mozine.cn/index.php?showtopic=601Windows下如何编译Mozilla源代码
http://www.firefox.net.cn/newforum/viewtopic.php?p=12810如何在window环境下编译mozilla/firefox
zz from lotusroots.bokee.com
mozilla/firefox这个浏览器(现在的最高版本是firefox 2.0 rc3,稳定版本是firefox1.5.0.7)已经很有名气了,这次,我因为需要使用里面的某些部分,不得不从源代码开始编译它。当然了,自己不太可能使用linux来编译,所以我使用的环境是win2003系统。
1,首先到网上找信息,发现编译它并不是那么容易的事情,许多人都出现了许多问题。值得一看得有如下几个网页:官方关于编译的页面:
http://developer.mozilla.org/en/docs/Build_Documentation;使用vs2005编译mozilla(firefox)的页面:
http://cs.senecac.on.ca/~david.humphrey/writing/firefox-win32-build.html;更清楚的讲解vs2005编译的页面:
http://zenit.senecac.on.ca/wiki/index.php/Assignment_1_(pstdenis);
2,准备编译工具。要准备的工具实在是很多哦,包括:vs2005、cygwin、nsis、moztools共4项。第一项好说,去任何一个站点下载免费版的vs2005,第二项的下载地址为:
http://www.cygwin.com/,第三项需要到如下地址去下载:
http://nsis.sourceforge.net/Download,第四项的下载地址为:
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/moztools-static.zip。
3,安装编译工具。vs2005的安装(主要安装的是vc++)没有什么可说的,唯一的一点就是:为了以后配置的方便,推荐使用默认目录安装。nsis的安装也容易,注意使用full安装选项,不要漏掉什么东西了。moztools只是一个压缩包,解压缩后放到一个目录就行了。cygwin的安装是一个比较麻烦的事情,因为你下载的只是一个客户端,你需要运行它,然后在线升级(安装)你需要的功能,一定要选择一个快速的服务器(如果你的网络很慢的话,我建议你就不要编译mozilla了)。安装的时候,你需要选择如下几个包:
* ash
* diffutils
* fileutils
* findutils
* gawk
* grep
* sed
* sh-utils
* textutils
这几个都是默认安装的。你还需要额外的安装如下几个包:
* coreutils
* cvs
* cygutils
* libiconv
* make
* patch
* patchutils
* perl
* unzip
* zip
版本随便都可以。当然了,这个只是奢望,目前的mozilla的源代码仅仅支持3.80版本的make程序,而现在从cygwin里面是无法安装上make 3.80版本的,因为最低都是3.81版本。所以,你还需要到下面去下载一个make 3.80版本回来:
http://ftp.gnu.org/pub/gnu/make/,然后把那个里面的bin\make.exe拷贝到cygwin目录下的bin\make.exe位置,覆盖原来的那个make.exe即可。
4,配置。总共有2个部分需要配置,一个是各种工具的路径,一个是编译必需的mozconfig文件。为了开始配置,我们需要设定一个目录,用来保存 mozilla的源文件。推荐的方式是这样的:a) 建立目录:c:\proj;b) 建立目录:c:\proj\mozilla;c)把moztools工具保存到c:\proj\moztools下;d) 把cygwin安装到c:\proj\cygwin目录下。当然,这不是必需的。于是,第一部分配置可以使用如下的一个配置文件实现:
@echo off
rem --- CVS Setup
SET CVSROOT=:pserver:
[email protected]:/cvsroot
SET CVS_RSH=ssh
rem --- paths of moztools
set MOZ_TOOLS=c:\proj\moztools
set GLIB_PREFIX=%MOZ_TOOLS%
set LIBIDL_PREFIX=%MOZ_TOOLS%
rem --- path of window
SET INCLUDE=
SET LIB=
SET PATH=c:\;c:\windows\system32;c:\windows\system32\wbem
rem --- path of cygwin
SET PATH=c:\proj\cygwin\bin;%PATH%
rem --- path of vc8(vs 2005)
CALL "c:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86
rem --- path of moztools/glib and /libidl
SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%
SET LIB=%GLIB_PREFIX%\lib;%LIB%
rem --- moztools comes last after glib/libIDL
SET PATH=%PATH%;%MOZ_TOOLS%\bin
rem --- path of NSIS
SET NSIS=c:\NSIS
SET PATH=%PATH%;%NSIS%
把这些文本保存为一个bat文件,比如:buildsetup.bat,推荐保存到c:\proj目录下。
第二部分的处理有点特点,现在我们需要建立一个如下内容的名字叫做:“.mozconfig”的文件,不要试图直接建立这个文件,因为window会告诉你说必须键入文件名!你使用记事本,输入如下内容,然后保存为“.mozconfig”即可:
# Building Firefox Trunk with Debugging
. $topsrcdir/browser/config/mozconfig
# Put all obj files in one place, not in src tree
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-objdir
ac_add_options --disable-static
ac_add_options --enable-shared
# Debug Build Setup Options
ac_add_options --disable-optimize
ac_add_options --enable-debug
# I'm using Canvas for my work
ac_add_options --enable-canvas
# I disabled the installer
ac_add_options --disable-installer
这个文件必须保存到刚才建好的c:\proj\mozilla目录下。
5,开始下载源文件。你可以不下载源文件,你可以到ftp.mozilla.org去下载最新的代码,然后保存到mozilla,再进行第6步操作。但是,需要提醒你的是:我下载了4份源代码(seamonkey,mozilla,firefox),却没有一个能够编译的,不是说少了文件就是说哪个代码编译错误。反正我建议你是用下面的这种直接通过cvs到mozilla上下载源代码的办法(因为它没有压缩,所以,这些代码的大小在240M左右,压缩后的代码一般在30M左右)。
a)首先进入c:\proj目录,并执行buildsetup.bat,下面是屏幕的操作过程:
C:\Documents and Settings\Administrator>C:
C:\>cd proj
C:\proj>buildsetup.bat
Setting environment for using Microsoft Visual Studio 2005 x86 tools.
C:\proj>
b)然后下载cvs的配置文件,下面是屏幕显示:
C:\proj>cvs login
Logging in to :pserver:
[email protected]:2401/cvsroot
CVS password:
C:\proj>cvs co mozilla/browser/config mozilla/client.mk
cvs checkout: Updating mozilla/browser/config
C:\proj>
这里,注意输入的password为:anonymous。
c)接着进入mozilla目录,然后就开始了漫长的源文件下载了,一个字:等待:
C:\proj\mozilla>make -f client.mk checkout
6,一切准备妥当了,现在该开始编译程序了:
c:\proj\mozilla>make -f client.mk build
其他说明:
1,下载的源文件大概有240M,所以,下载是一个漫长的过程,我用了30多分钟;
2, 编译是一个更加漫长的过程,我使用了3个小时才搞定,我的配置是:1.8G + 512M;
3,因为我们在“.mozconfig”文件里面使用了debug模式,编译出来的是一个debug模式下的名字叫做firefox.exe 的文件,如果你是用它进行网络连接的话,你会发现常常跳出错误窗口,这个是用来测试的(你需要每次点忽略才能继续执行)。会十分的麻烦的,所以,你可以把 “ac_add_options --enable-debug”这一行去掉,免得麻烦。换上:“ac_add_options --disable-debug”,记住,这样处理后能够加快编译的速度!加快速度的另外一个办法是加上:“ac_add_options --disable-tests”,这样就不会生成许多测试程序了。推荐的,编译firefox时,最好的“.mozconfig”是这样的:
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt-static
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --disable-static
ac_add_options --enable-shared
ac_add_options --disable-tests
mk_add_options MOZ_CO_PROJECT=browser
4, 编译好了的文件在c:\proj\mozilla\firefox-objdir\dist\bin 目录下(如果你使用的是非debug的模式,那么,文件在目录c:\proj\mozilla\ff-opt-static\dist\bin下),名字叫:firefox.exe,可是,当你执行它了之后,你到帮助下面查看它的版本,会发现它叫:MineField 3.0a1(以前不是着名字)的。赫赫。
5, 如果你想编译成一个安装的版本,你可以删除:“ac_add_options --disable-installer”。其他更多的编译选项可以参考:http: //developer.mozilla.org/en/docs/Configuring_Build_Options。
如果大家有什么问题可以随时发送上来。