天天看点

如何自己编译firefox

导读:

  准备编译环境,需要安装 cygwin的unix模拟环境,下载cygwin,在default安装之外,需要选择安装如下包:

  * cvs

  * cygutils

  * make

  * patch

  * patchutils

  * perl

  * unzip

  * zip

  如果你不是通过CVS下载代码,cvs可以不装,不过考虑到必须通过cvs下载locals文件,还是装了吧。

  如果使用微软编译器(官方发布的就是使用微软编译器) ,建议用VC 6 + SP5 + Visual C++ Processor Pack.

  如果使用vc7和.net编译器,还要做一些设定,此处暂时不讲。安装vc6的时候,建议让它去设置自己的环境变量,后面会比较方便。

  也可以使用cygwin自带的编译器(或者mingw的,也是cygwin使用的gcc fore windows),但是编译出来的程序比vc编译的要大,效率可能也要低一些.至少要安装:

  * gcc-core

  * gcc-g++

  * binutils

  * w32api

  * mingw-runtime

  准备环境变量设置脚本 mozset.bat (目录位置自行根据情况修订)

  @echo off

  set MOZ_TOOLS=c:/mozilla/moztools

  set PATH=c:/mozilla/mingw/bin;c:/mozilla/cygwin/bin;%MOZ_TOOLS%/bin;%PATH

  set HOME=c:/mozilla

  set CVSROOT=:pserver:[email protected]:/cvsroot

  安装netscape的wintools,下载:

  http://ftp.mozilla.org/pub/mozilla.org/mozilla/source/wintools.zip

  安装

  set MOZ_TOOLS=c:/mozilla/moztools

  mkdir c:/mozilla/moztools

  cd buildtools/windows

  install.bat

  建议做头文件格式转换 d2u在cygwin/bin下面

  cd c:/mozilla/moztools/include/

  d2u.exe *.h

  cd libIDL/

  d2u.exe *.h

  下载firefox 1.0的源码 ,在www.mozilla.org上可以找到

  设置编译环境 mozilla目录下的 .mozconfig文件

  . $topsrcdir/browser/config/mozconfig

  mk_add_options [email protected]@/ff

  ac_add_options --enable-optimize

  ac_add_options --disable-debug

  ac_add_options --disable-tests

  ac_add_options --enable-static

  ac_add_options --disable-shared

  ac_add_options --enable-official-branding

  ac_add_options --enable-ui-locale=zh-CN

  指定编译mozilla里面的browser firefox ,加载默认编译选项,后面的都是官方编译选项,可以自行加入进行优化,优化说明参见官方网站说明

  指定编译好以后的程序放在 mozilla/ff目录中

  最后一行指定编译简体中文界面(但是要先下载相应的locles文件)

  如果是使用cygwin的编译器还需要加入这两个编译选项禁用特性

  ac_add_options --disable-activex

  ac_add_options --disable-accessibility

  另外,如果没有装vc6 ,还需要修改 mozilla/config/static-config.mk,去掉urlmon

  STATIC_EXTRA_LIBS += $(call EXPAND_LIBNAME,comctl32 comdlg32 uuid shell32 ole32 oleaut32 Urlmon version winspool)

  改为:

  STATIC_EXTRA_LIBS += $(call EXPAND_LIBNAME,comctl32 comdlg32 uuid shell32 ole32 oleaut32 version winspool)

  如果没有修改上面的几个地方,用gcc for windows无法编译通过firefox

  进入windows的cmd窗口

  运行 mozset.bat

  进入 firefox源码目录,

  编译

  make -f client.mk build

  我在制作redfox 1.0b版本的时候使用了madfox的补丁,你也可以不使用这个patch

  madfox patch的文件如下:

  ----

  patching file mozilla/browser/app/firefox.exe.manifest

  patching file mozilla/browser/app/macbuild/Contents/Info.plist.in

  patching file mozilla/browser/app/Makefile.in

  patching file mozilla/browser/installer/unix/installer.cfg

  patching file mozilla/browser/installer/unix/packages-static

  patching file mozilla/browser/locales/en-US/chrome/browser/aboutDialog.dtd

  patching file mozilla/browser/locales/en-US/chrome/browser/browser.dtd

  patching file mozilla/browser/locales/en-US/chrome/browser-region/region.properties

  patching file mozilla/browser/locales/en-US/chrome/global/brand.dtd

  patching file mozilla/browser/locales/en-US/chrome/global/brand.properties

  patching file mozilla/configure

  patching file mozilla/content/base/src/nsFrameLoader.cpp

  patching file mozilla/content/base/src/nsParserUtils.cpp

  patching file mozilla/content/html/document/src/nsHTMLContentSink.cpp

  patching file mozilla/docshell/base/nsDocShell.cpp

  patching file mozilla/docshell/base/nsDocShell.h

  patching file mozilla/docshell/base/nsIDocShellTreeItem.idl

  patching file mozilla/dom/src/base/nsGlobalWindow.cpp

  patching file mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp

  patching file mozilla/htmlparser/public/nsHTMLTagList.h

  patching file mozilla/htmlparser/src/nsElementTable.cpp

  patching file mozilla/htmlparser/src/nsHTMLTags.cpp

  patching file mozilla/js/src/jsdate.c

  patching file mozilla/layout/html/document/src/Makefile.in

  patching file mozilla/layout/html/document/src/quirk.css

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/Makefile.in

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/content/contents.rdf

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/content/xbl-xmldataisland.xml

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/jar.mn

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/Makefile.in

  patching file mozilla/netwerk/streamconv/converters/nsUnknownDecoder.cpp

  patching file mozilla/uriloader/base/nsURILoader.cpp

  ----

  $ patch -p0

  patching file mozilla/browser/locales/en-US/chrome/browser/aboutDialog.dtd

  patching file mozilla/content/base/src/nsFrameLoader.cpp

  patching file mozilla/content/base/src/nsParserUtils.cpp

  patching file mozilla/content/html/document/src/nsHTMLContentSink.cpp

  patching file mozilla/docshell/base/nsDocShell.cpp

  patching file mozilla/docshell/base/nsDocShell.h

  patching file mozilla/docshell/base/nsIDocShellTreeItem.idl

  patching file mozilla/dom/src/base/nsGlobalWindow.cpp

  patching file mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp

  patching file mozilla/htmlparser/public/nsHTMLTagList.h

  patching file mozilla/htmlparser/src/nsElementTable.cpp

  patching file mozilla/htmlparser/src/nsHTMLTags.cpp

  patching file mozilla/js/src/jsdate.c

  patching file mozilla/layout/html/document/src/Makefile.in

  patching file mozilla/layout/html/document/src/quirk.css

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/Makefile.in

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/conte

  nt/contents.rdf

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/conte

  nt/xbl-xmldataisland.xml

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/jar.m

  n

  patching file mozilla/layout/html/document/src/xbl-xmldataisland/resources/Makef

  ile.in

  patching file mozilla/netwerk/streamconv/converters/nsUnknownDecoder.cpp

  patching file mozilla/uriloader/base/nsURILoader.cpp

  ------

  如何编译本地化(例如简体中文)的版本

  下载firefox 1.0的UI local文件,默认源码包中没有,只能通过cvs下载

  export CVSROOT=:pserver:[email protected]:/cvsroot

  Firefox 1.0 source is not on the main CVS "trunk" but rather from a branch, named AVIARY_1_0_20040515_BRANCH. In order to check out the locale files from this branch, you must use the -r flag with CVS:

  cvs -d :pserver:[email protected]:/l10n checkout -rAVIARY_1_0_20040515_BRANCH mozilla

  另外一种方式,安装Locale switcher extension,然后在下面安装指定的xpi文件,但这种方法无法编译为中文安装界面(好在我们可以自己写nsis脚本)

  http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-0.11-l10n/windows-xpi/

  编译安装包

  For Firefox 0.9 and later, you first need to build a static build. Then do cd mozilla/browser/installer and then make installer. The installer bits will be found at mozilla/dist/install/FirefoxSetup.exe.

  打包成zip

  make -C C:/mozilla/mozilla/XXXX编译目录/browser/installer

  _________________

  Redfox V1.0

  中文FireFox绿色增强版本 ,完全的firefox日常使用解决方案 ,参见

   http://www.firefox.net.cn/newforum/viewtopic.php?p=5400#5400

针对windows xp下如何编译firefox写一个step by step的向导.(亲自实践的结果,希望对大家有所帮助

如何自己编译firefox

(从我的msn空间转贴过来))

How to compile Mozilla under windows

在windows下编译mozilla(mainly firefox) 不是一个容易的事情,如果自己从头搭环境的话.

ben has released a package named mozillaBuildSetup.exe可以简化很多工作,但是仍然有很多事情需要明确下.

大致要经历如下步骤才可以顺利编译通过.

STEP1. 从网上下载mozillaBuildSetup.exe建立环境.(FROM http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.1.exe)

STEP2 安装这个包,然后更换这个包中的grep.exe ,(位于mozilla-bulid/msys/bin下).包中的版本为2.4,需要换为2.5.(2.4的grep 不认识-x option,会出错的)

STEP3 下载windows sdk,通常要安装2003sp1,或2003sp2,如果是XP的话,安装xp2 sdk也可以.

(xp2 sdk 可以从这里下载 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm)

当然,在此这前,你必须安装有vc工具,最好装个2005如果你要编译firefox 2.0 或trunk代码的话,要编译以前的版本的话,你需要装vc7,或者

vc6,具体可以查看这里:http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites)

其它的注意点:

1.最好用CVS去下载代码,否则由于UNIX系统和WINDOWS由于换行的不同会给你带来很多麻烦.

   如何下载代码,查看这里:http://developer.mozilla.org/en/docs/Mozilla_Source_Code_%28CVS%29,如果对CVS命令有

   一定了解的话,不会有什么难度,最好要搞明白CVS的分枝(BRANCH)和主于(TRUNK)的概念

 2.初学者对UNIX上的编译系统不了理解,这里有一些注意点,别问为什么先记着.以后再慢慢理解.

   2.1你CHECK OUT 源代码会产生一个mozilla文件夹.全部源代码下载完后,这里建个名为mozconfig的文件.这个文件里放的是一些需要编译的程序的配置.(背景知识:mozilla,是一个很广的概念,里面有很多东东,如firefox, mail, seaMonkey.你可能只需要编译其中的一个或两个,所以你需要在这里放上你要编译的程序的配置文件,具体可以参照这里.http://developer.mozilla.org/en/docs/Configuring_Build_Options

   2.2同样的你需要修改每个编译的配置文件如FIREFOX,你就需要修改mozilla/browser/mozconfig来满足你的需要,怎么改参照这里http://developer.mozilla.org/en/docs/Configuring_Build_Options

2.3特别容易忘记.在编译之前一定要export MOZCONFIG=/e/mozilla/mozconfig(这里只是一个例子,这里假定源代码放在E:/mozilla中,这个命令是在MINGW32中敲的。

3.关于minGw32,你安装好mozillaBuildSetup后,会在mozilla-build文件夹下发现几个批处理文件startxxx.bat, xxx代表vc6,vc7,vc8,你根据所安装的编译器,点相应的批处理文件就可以启动minGw32,启动切到你的mozilla源代码所在目录就OK了,也就是在这里敲export 命令的.(2.3).

附件中是我编译firefox的一些配置,欢迎批评和指证.

里面的目录结构和源代码目录结构相对应.(这是我四个月前编译firefox主干的代码的配置对于现在firefox的主干代码也应是可以的.(注:你若要用xulrunner来运行firefox应另当别论))

本文转自

http://www.firefox.net.cn/newforum/viewtopic.php?t=1761