deepin
小狐狸
小狐狸
  • UID797
  • 注册日期2004-12-12
  • 最后登录2005-01-21
  • 发帖数58
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:49825回复:19

如何自己编译firefox

楼主#
更多 发布于:2005-01-12 21:06
准备编译环境,需要安装 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:anonymous@cvs-mirror.mozilla.org:/cvsroot


安装netscape的wintools,下载:
http://ftp.mozilla.org/pub/mozilla.org/ ... ntools.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 MOZ_OBJDIR=@TOPSRCDIR@/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 < new-madfox-patch.0.2.diff
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:anonymous@cvs-mirror.mozilla.org:/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:anonymous@cvs-mirror.mozilla.org:/l10n checkout -rAVIARY_1_0_20040515_BRANCH mozilla


另外一种方式,安装Locale switcher extension,然后在下面安装指定的xpi文件,但这种方法无法编译为中文安装界面(好在我们可以自己写nsis脚本)
http://ftp.mozilla.org/pub/mozilla.org/ ... ndows-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日常使用解决方案 ,参见
https://www.firefox.net.cn/newforum/view ... =5400#5400
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-06-03
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
1楼#
发布于:2005-01-12 21:06
我在Debian GNU/Linux 下用apt-build --reinstall install mozilla-firefox 编译了一把,应该是快了些。也许在gentoo下更好。
summermick
小狐狸
小狐狸
  • UID4234
  • 注册日期2005-03-20
  • 最后登录2005-03-20
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-01-12 21:06
使用vc7和.net编译器
英文网页上说的那个连接打不开!~
谁来说明一下
fiag
管理员
管理员
  • UID1188
  • 注册日期2004-12-21
  • 最后登录2024-06-03
  • 发帖数4681
  • 经验686枚
  • 威望0点
  • 贡献值402点
  • 好评度51点
3楼#
发布于:2005-01-12 21:06
Gentoo
# emerge mozilla-firefox

LinuxSir.Org - 请问怎么emerge中文的firefox?

http://ftp.mozilla.org/pub/mozilla.org/ ... linux-xpi/
藏的好深,然后about:config,将 intl.locale.matchOS 的值改为 true 。
mixiumaqi
小狐狸
小狐狸
  • UID6652
  • 注册日期2005-06-09
  • 最后登录2005-09-16
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-01-12 21:06
按照楼主的做法出错!help!
我按照楼主的做法,用的是VS6.0 + SP5 + Process pack。编译时出现三个错误:

1。midl
会报The linker's major version doesn't match with the c++ compiler.
解决方法:把cygwin/bin下的link.exe改名。这个是因为我装了GCC package吗?

2. $MOZ_TOOLS的设置
configure: line 5485: cd: e:\work\Mozilla\moztools: No s
uch file or directory
configure: error: cd $MOZ_TOOLS failed. MOZ_TOOLS ==? e:\work\Mozilla\moztools

解决方法:set MOZTOOLS=/cygdrive/c/mozilla/moztools。

3。最后终于可以进入编译了,但编译到这一步就出错了:
make[3]: Entering directory `/cygdrive/c/mozilla/ff/toolkit/components/profile/public'
make[3]: *** No rule to make target `export'.  Stop.
make[3]: Leaving directory `/cygdrive/c/mozilla/ff/toolkit/components/profile/public'
make[2]: *** [tier_9] Error 2
make[2]: Leaving directory `/cygdrive/c/mozilla/ff'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/c/mozilla/ff'
make: *** [build] Error 2
搞不定了:(
谁遇到过这样的问题,能告诉我怎么解决? Thanks!
我的QQ: 9042444
舞间道
千年狐狸
千年狐狸
  • UID41
  • 注册日期2004-11-22
  • 最后登录2022-12-14
  • 发帖数1839
  • 经验-150枚
  • 威望0点
  • 贡献值-352点
  • 好评度-180点
  • 社区居民
5楼#
发布于:2005-01-12 21:06
Win下面可以编译吗???
Skype  支持  Linux  |  MacOS  |  Windows  |  Pocket  PC
哈哈
非常火狐
非常火狐
  • UID8380
  • 注册日期2005-09-03
  • 最后登录2013-06-23
  • 发帖数946
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2005-01-12 21:06
学点试试去.
Kid冬冬
小狐狸
小狐狸
  • UID9924
  • 注册日期2005-11-19
  • 最后登录2005-12-12
  • 发帖数11
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-01-12 21:06
firefoxvswebkit
小狐狸
小狐狸
  • UID22145
  • 注册日期2007-12-04
  • 最后登录2008-09-27
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2005-01-12 21:06
How to compile Mozilla under windows
楼主写的真的很不错,只是稍有一点儿烦琐.其实Ben(firefox的leader engineer,呵呵,现被GOOGLE挖走的那个牛人)写了一工具包,用来编译firefox会很省事的.下面我只针对windows xp下如何编译firefox写一个step by step的向导.(亲自实践的结果,希望对大家有所帮助 (从我的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/ ... up-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/pla ... nstall.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应另当别论))
附件名称/大小 下载次数 最后更新
mozilla.rar (1KB)  161 2007-12-04 21:05
mozilla.rar (1KB)  104 2007-12-04 21:04
firefoxvswebkit
小狐狸
小狐狸
  • UID22145
  • 注册日期2007-12-04
  • 最后登录2008-09-27
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2005-01-12 21:06
grep 2.5.1命令行工具
Ben的编译包中的grep version 2.4应替换成version 2.5的.
为了进一步方便大家编译我把grep 2.5命令行工具也发上来,里面有几个dll(3个)和一个exe只需用它覆盖ben的编译包相应的dll和grep就可以了
firefoxvswebkit
小狐狸
小狐狸
  • UID22145
  • 注册日期2007-12-04
  • 最后登录2008-09-27
  • 发帖数5
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2005-01-12 21:06
附什太大了,只好分成两个部分
附件名称/大小 下载次数 最后更新
greppart2.rar (482KB)  132 2007-12-04 21:21
greppart1.rar (181KB)  127 2007-12-04 21:21
msky
千年狐狸
千年狐狸
  • UID14649
  • 注册日期2006-09-21
  • 最后登录2023-04-03
  • 发帖数2959
  • 经验166枚
  • 威望0点
  • 贡献值12点
  • 好评度9点
  • 社区居民
11楼#
发布于:2005-01-12 21:06
都是强人啊

膜拜~~
zgjsisuo
小狐狸
小狐狸
  • UID22572
  • 注册日期2008-01-07
  • 最后登录2008-01-08
  • 发帖数3
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2005-01-12 21:06
谢谢了,请问如何在 windows下面 建立 thunderbird的 调试用的工程?
IceSword511
小狐狸
小狐狸
  • UID23306
  • 注册日期2008-03-19
  • 最后登录2008-03-19
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2005-01-12 21:06
顶,谢谢了
n4tur3
小狐狸
小狐狸
  • UID24445
  • 注册日期2008-06-05
  • 最后登录2008-06-06
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
14楼#
发布于:2005-01-12 21:06
ubuntu下如何编译
使用apt-build编译,编译完源代码树就被删除了。能否说明一下apt-build所做的每一步,好来手工重复一下。
上一页
游客

返回顶部