输入您的搜索字词 提交搜索表单

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指定的位置生成版本,这两个软件都不需要安装,直接运行对应的可执行文件就可以了。

自己动手编译Mozilla Firefox和ThunderBird相关推荐

  1. file协议访问linux,Mozilla Firefox for Android 'file'协议未授权访问漏洞(CVE-2014-1501)

    发布日期:2014-03-18 更新日期:2014-04-02 受影响系统: Mozilla Firefox < 28.0 描述: ------------------------------- ...

  2. Mozilla Firefox 7.0 发布

    为什么80%的码农都做不了架构师?>>> Mozilla Firefox 7.0 发布 Mozilla 发布了Firefox 7.不同于Firefox5和6--它们Firefox只是 ...

  3. 【历史上的今天】11 月 9 日:TensorFlow 问世;Mozilla Firefox 发布标准版;Intel 和微软分道扬镳

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 11 月 9 日,在 6 年前的今天,中国科学家王贻芳首获"基础物理学突破奖", ...

  4. firefox 3.6 for linux,Mozilla Firefox 3.6 版本資訊

    此版本資訊包含了新鮮事.下載與安裝指示.已知問題以及 Firefox 3.6 的常見問題等訊息.如發現任何程式錯誤,請先行將版本資訊與錯誤回報注意事項閱讀完畢,再到 Bugzilla 回報. 我們想知 ...

  5. 【历史上的今天】11 月 9 日:TensorFlow 问世;Mozilla Firefox 发布标准版;英特尔和微软分道扬镳

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 11 月 9 日,在 7 年前的今天,中国科学家王贻芳首获"基础物理学突破奖", ...

  6. firefox 39 linux,Mozilla Firefox 39.0 Beta 4 发布下载

    Mozilla Firefox 39.0 Beta 4 今日发布于Mozila的FTP,目前官方还没有发布相关的更新报告,但从面向开发者的信息看,SSLv3被彻底移除出Firefox的支持范围,并实现 ...

  7. Mozilla Firefox 10.0 beta4 发布

    新一年Mozilla继续马不停蹄的更新,Mozilla Firefox 10.0 beta4版本目前已经可以在官方的FTP上下载,各位感兴趣的浏览迷抓紧下载更新吧. Win 32 平台下载地址: ht ...

  8. Mozilla Firefox 在用户访问被黑客攻击的网站时发出警告

    百度智能云 云生态狂欢季 热门云产品1折起>>>   Mozilla 正致力于 优化 Firefox Monitor 功能,该功能推出于 2018 年,目的是让用户确认他们的账户信息 ...

  9. ubtunu打开firefox_在Ubuntu中安装Mozilla Firefox的4种方法

    Mozilla Firefox是Ubuntu的官方Internet浏览器,因此,大多数Ubuntu发行版都默认安装了它.如果您的系统由于某种原因缺少此浏览器,或者您不小心删除了该浏览器,我们将告诉您如 ...

最新文章

  1. SAP MM UB类型的退货STO流程简述
  2. 智能车联,一场「以人为核心」的智能化变革
  3. JS+Canvas的棋盘游戏和Java的动态结合
  4. RPM包搜索下载网站
  5. C语言求35 45的最大公约数,c语言编程题目及答案
  6. Redis事务回滚深入
  7. MTK 驱动开发(22)---camera 硬件和软件概述
  8. MySQL workbench创建用户与授权
  9. CSS教程:实例讲解定位Position
  10. 考研分享:三战南大,考研的路上你从不孤独(内附500G最新考研资料分享)
  11. 蓝桥杯 BEGIN-1 入门训练 A+B问题
  12. php查找之二分查找
  13. android 拍照 比例,Android全屏摄像头 – 同时保持摄像头选择的比例
  14. 苹果CMS火车头采集发布模块教程
  15. 如何用Python操作PDF制作数据报告?
  16. 华为S5700交换机端口聚合
  17. AMD Ryzen Threadripper 2990WX和intel 9980XE 用于第一性原理计算对比
  18. 苹果怎么换行打字_好玩的微信空白朋友圈怎么发?教程来了!
  19. 儿童学计算机编程好处,孩子学编程的好处和坏处
  20. py2下hbase的字符串编码问题(\\xe7\\xbc\\x96)

热门文章

  1. 全志A40i开发板Android应用开发指导
  2. 灵汐科技:类脑计算芯片——脑科学研究与后摩尔时代算力突破的新起点
  3. 学习编程语言必须掌握哪些计算机基础知识?
  4. 第6章 实战电影公众号 6-1 第六天简介
  5. debian lcd4linux,Debian GNU/Linux 10 Buster安装包加 Linux 4.12 支持
  6. 两个嵌套for循环的执行顺序
  7. 2022年年初,我们的兼职平台网站“职接”立项了,作为产品入门我开始慌了
  8. 热乎乎的面试经验(java后端开发-5k-天津)
  9. Leetcode刷题100天—566. 重塑矩阵(数组)—day25
  10. 目标检测:Anchor【就是在图像上预设好的不同大小,不同长宽比的参照框】