自己動手編譯Mozilla Firefox和ThunderBird

來源:互聯網
上載者:User

     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指定的位置產生版本,這兩個軟體都不需要安裝,直接運行對應的可執行檔就可以了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.