天天看點

如何自己編譯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