几天前我尝试着构造FireFox,我犯了几个经典错误,好在网上有很多资源教我如何解决这些问题,最后我还是成功地将FireFox 2.0 RC3的源码构造成功。这里是我所做的:
1. 先到http://www.mozilla.org,查找最新的源码,一般你在这里能找到源代码:ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases,我用的是2.0 RC3.
2. 然后找到构造FireFox前所要下载的各种工具,第一个我看到的是Cygwin。就安装这个软件,其实就是Linux中端的模拟器。成功构造FireFox后,我觉得它是个不错的构造系统。这些准备步骤在这里可以找到:http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites_on_the_1.7_and_1.8_Branches
3. 旧的构造前期准备工作可以在这里找到:http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites,这个链接不值得看。
4. 安装Cygwin,要装几个部件:
a. Coreutils,CVS,diffutils,findutils,gawk,grep,libiconv,make 3.80,patchutils,perl,sed,unzip,zip。
b. 这些我只用到了make 3.80。这也是我犯的最后一个错误,Cygwin最新的make部件版本是3.81。而使用版本是3.81的make部件构造FireFox在最后1/3的过程中会导致失败。而Cygwin没有旧的make部件,所以你只能到别的地方去下载,并自己安装。自己安装其实不难,自己解决。
c. 你要下载一个moztools部件。
d. 你要下载glib和libIDL。
5. 我的设置是:
a. 安装cygwin到c:/cygwin
b. 安装moztools到c:/moztools
c. 安装glib-1.2.10到c:/glib-1.2.10
d. 安装libIDL-0.6.8 到C:/libIDL-0.6.8
6. 我用的是微软的Visual Studio .NET 2003。
7. 我给Cygwin的设置是:
@echo off
C: chdir C:/cygwin/bin
set HOME=C:/cygwin/home
set VCVARS=C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/vcvars32.bat set MSSDK=C:/Program Files/Microsoft Platform SDK
set MOZ_TOOLS=C:/moztools
set CYGWINBASE=C:/cygwin set CYGWIN=nodosfilewarning
set GLIB_PREFIX=C:/glib-1.2.10/vc71 set LIBIDL_PREFIX=C:/libIDL-0.6.8/vc71
set PATH=%CYGWINBASE%/bin;%PATH% call "%VCVARS%"
set PATH=%MSSDK%/bin;%PATH% set INCLUDE=%MSSDK%/include;%INCLUDE% set LIB=%MSSDK%/lib;%LIB%
set PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%/bin set INCLUDE=%GLIB_PREFIX%/include;%INCLUDE% set LIB=%GLIB_PREFIX%/lib;%LIB%
set PATH=%PATH%;%LIBIDL_PREFIX%;%LIBIDL_PREFIX%/bin set INCLUDE=%LIBIDL_PREFIX%/include;%INCLUDE% set LIB=%LIBIDL_PREFIX%/lib;%LIB%
set PATH=%PATH%;%MOZ_TOOLS%/bin
bash --login -i |
8. 我把mozilla的源码解开后,把它放到C:/mozilla里。
9. 最后,我要建立一个.mozconfig文件,放到:C:/mozilla里。
mk_add_options MOZ_CO_PROJECT=browser
ac_add_options --enable-application=browser
ac_add_options --disable-installer
10. 现在就可以进行构造了:
a. 打开cygwin;
b. 进入/cygdrive/c/mozilla
c. 最后,用make -f client.mk build进行构造。
挺简单的。