言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

firefox をコンパイルする。

折角なので firefox 本体も VisualStudio 2003 でコンパイルしてみる事にした。結論を言うと、よっぽど暇な人以外はやらない方が良いと思う。firefox の中には勉強になる要素が沢山あるんだけど、毎度コンパイルの度にここまで待たされるのは嫌だなあと思った。ドキュメントは大変充実していて、しかも日本語訳さえあるのでのんびりやれば大丈夫だ。しかし大変な事は大変。やり方は以下のとおり。

条件

やり方

$ cat > .mozconfig
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt-static
ac_add_options --enable-optimize
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-tests
ac_add_options --disable-installer
ac_add_options --enable-debugger-info-modules
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
$ make -f client.mk build

obj-i686-pc-cygwin/dist/bin/firefox.exe が出来ていれば完成。

デバッグ

  • Visual Studio 2003 を開く
  • ファイル - ソリューションを開く
  • firefox.exe 実行ファイルを選択
  • 適当な場所に sln ファイルを保存
  • 実行
  • 適当に一時停止ボタンを押すとソースが読めます。これは面白い!

注意点。難しかった点。

  • ソースは cygwin のパスにあってはならない。
  • make のバージョンは 3.80
  • cygwin の /bin/link.exe が呼ばれないように
  • config しなおしたい時は、make -f client.mk distclean
  • ビルド中 iconv が Error 57 が落ちるがどうすればよいか分からず、とりあえず Makefile 内の iconv を cat に変えてしまった!でも動いている。。。
  • 他に firefox が動いていると、バージョンが違ってもコンパイル出来ない時が有る。