前幾天心血來潮
,
想自己編譯一個
firefox
試試看
,
折騰了好幾天
,
終于完成了
.
寫篇文章總結一下
.
我編譯的環境
:
1.??????
VC6 + sp5
2.??????
firefox
編譯需要的輔助工具
wintools.zip
3.??????
cygwin
環境
?
準備工作
:
1.???????下載
firefox
程序代碼,在
mozilla
的站點上可以下載到,我編譯的是
firefox 1.5.0.6
版本
2.??????
下載編譯需要的
wintools.zip
工具
,1.73MB
大小
,
其中帶有
glib
和
libidl
庫
,
在下載解壓縮后
,
建立一個環境變量
MOZ_TOOLS
到某個目錄
,
然后進入解壓縮后的
windows
目錄
,
運行
install.bat
文件
,
安裝相關需要的文件
.
3.??????
安裝
cygwin
環境
,
一個
window
下的類
unix
平臺
,
這里需要注意的是
,
最新的
cygwin
中
,
安裝的
make
版本是
3.81
的
,
而編譯
firefox
需要的是
3.80
版本的
make,
解決的方法是到
cygwin
的某個
ftp
鏡像站點上去下一個
3.80
版本的文件
,
安裝到
cygwin
安裝目錄下的
/bin
目錄下就可以了
.
其中編譯
firefox
需要的基本工具
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)
make 3.80 (not 3.81!) -- 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)
可以在
cygwin
命令窗口中輸入相關命令檢測是否安裝了相關的程序
.,
其實如果下載了
firefxo
源代碼的話
,
象
cvs
中的都不是必須的
.
4.??????
安裝
vc6 + sp5,
編譯
firefox 1.5.0.6,
推薦的是
vc6
的
cpp
編譯器
.
在
vs6
安裝后
,
會自動設置相關的
path,include
和
lib
環境變量
.
有一個需要注意的是
, vc6
的
link.exe
和
cygwin
中的
link.exe
是相同的名字
,
為了避免在編譯的時候
,
調用錯誤的
link
執行文件
,
可以把
cygwin/bin
中的
link.exe
改名為
glink.exe
避免沖突
. Vs
的
sp5
補丁也需要打一下
,
否則
,
生成的
xpldl.exe(firefox
用來編譯
idl
文件的工具
)
在編譯
idl
過程中會報錯
.
5.??????
配置文件
在環境和編譯工具準備好后
,
解壓縮
firefox
的代碼
,
然后在
firefox
代碼目錄的
mozilla
目錄下
,
建立一個名為
.mozconfig
的文件
,
并在其中編輯文本
. $topsrcdir/browser/config/mozconfig
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-test
開工
上面所有工作完成之后
,
啟動
cygwin
命令窗口
,
進入
firefox
代碼的
mozilla
目錄
輸入
make –f client.mk build
命令開始編譯
,
一切順利的話
,
幾十分鐘后
,
就會有一個
firefox
的執行文件生成到
mozilla/dist/bin
目錄下
.
需要注意的是
,
在生成一個
test
的模塊的時候
,
會報一個
jsint
類型未定義
,
這個無關緊要
,
因為
firefox
已經生成了
,
這是一個測試模塊
,
我的解決方法是
,?打開那個出錯的cpp文件,加入
#ifdef?? _MSCVER
typedef? int? int32;
#endif
然后再編譯就可以了
,
所謂自動動手
,
豐衣足食
,
有的時候
,
實在不行的話
,
需要把
firefox
的代碼自己動手改一下
.
?
?