阅读:50698回复:19
如何自己编译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: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 |
|
|
1楼#
发布于:2005-01-12 21:06
我在Debian GNU/Linux 下用apt-build --reinstall install mozilla-firefox 编译了一把,应该是快了些。也许在gentoo下更好。
|
|
2楼#
发布于:2005-01-12 21:06
使用vc7和.net编译器
英文网页上说的那个连接打不开!~ 谁来说明一下 |
|
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 。 |
|
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 |
|
5楼#
发布于:2005-01-12 21:06
Win下面可以编译吗???
|
|
6楼#
发布于:2005-01-12 21:06
学点试试去.
|
|
7楼#
发布于:2005-01-12 21:06
|
|
8楼#
发布于:2005-01-12 21:06
How to compile Mozilla under windows
楼主写的真的很不错,只是稍有一点儿烦琐.其实Ben(firefox的leader engineer,呵呵,现被GOOGLE挖走的那个牛人)写了一工具包,用来编译firefox会很省事的.下面我只针对windows xp下如何编译firefox写一个step by step的向导.(亲自实践的结果,希望对大家有所帮助 ![]() 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应另当别论)) |
|
|
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就可以了 |
|
10楼#
发布于:2005-01-12 21:06
附什太大了,只好分成两个部分
|
|
|
11楼#
发布于:2005-01-12 21:06
都是强人啊
膜拜~~ |
|
12楼#
发布于:2005-01-12 21:06
谢谢了,请问如何在 windows下面 建立 thunderbird的 调试用的工程?
|
|
13楼#
发布于:2005-01-12 21:06
顶,谢谢了
|
|
14楼#
发布于:2005-01-12 21:06
ubuntu下如何编译
使用apt-build编译,编译完源代码树就被删除了。能否说明一下apt-build所做的每一步,好来手工重复一下。 |
|
上一页
下一页