公式には載っていない Firefox のコンパイル

Mozilla FirefoxはVisual Studio 2005 Professional Edition で困憊するすのが推奨されているのですが、公式サイト通りにコンパイルしようとしてもうまくいかないので、tips的なものを紹介します。


・用意するもの

VC8.0 (Visual Studio 2005 Express Edition)
Microsoft Windows SDK (Windows Server® 2003 R2 Platform SDK)
MozillaBuild v1.4
ターゲットのFirefoxのソース
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/バージョン/source/ に存在する  firefox-バージョン.source.tar.bz2をダウンロードします。

・bz2の解凍。
UniversalExtractorを使うと楽です。

・準備
Mozilla Build をインストールすると、start-msvc8.bat というのがあると思います。これが、2005用の インストール環境バッチです。
そのままでは動かないので

set VC8DIR=C:\Program Files\Microsoft Visual Studio 8\VC
set VC8EXPRESSDIR=C:\Program Files\Microsoft Visual Studio 8\VC
set SDKDIR=C:\Microsoft Platform SDK for Windows Server 2003 R2
set SDKVER=5

のように環境変数を追加します。

バッチファイルの起動が成功すると、ソースフォルダに移動して
Cygwinのコマンドプロンプト $ が表示され、 

make -f client.mk build と入力すればコンパイルができます。

configure: error: --enable-application=APP was not specified and is required.

しかし、このようなエラーが出た場合は、ファイルが足りません。

cp browser/config/mozconfig .

を実行します。

configure: error: System header wpcapi.h is not available. See updated http://de
veloper.mozilla.org/en/docs/wpcapi.h for details on fixing this problem.

のようなエラーが出る場合は、SDK v6 が必要なのですが、2つの方法が選択できます。
1.Vista 用のAPIを無効化する

./configure --enable-application=browser --disable-vista-sdk-requirements

2.追加のInclude ファイルを導入する コンパイルはできるのですが、v6のShObjIdl が必要になるので、結局 v5.2の SDKでは無理のようです。

・Runtime が不要な実行パックを作る。

そのままコンパイルすると次のように MSVC*80.DLLが必要なパッケージができてしまいます。
ffrun
security\nss\lib\freebl\mpi\MakeFile.win や config\config.mk、js\src\config\config.mk、js\src\ref-config\WINNT*.mk、security\coreconf\WIN32.mk の CFLAGS、RTL_FLAGS、OS_CFLAGS 中の -MD となっている個所を -MT に変更してやることで解決すると思います。

[2010/2/1加筆]大ウソでした(^^;

start-msvc*.bat をいじります。

set MOZCRT=C:\mozilla-build\lfx\memory\jemalloc\src\build\intel

set LIB=%MOZCRT%;%LIB%
set LIBPATH=%MOZCRT%;%LIBPATH%

を書き加えるだけでOKです。
これで、MSVCRxx.dll の代わりに MOZCRT19.dllなどがリンクされます。

関連サイト
Download details: Windows® Server 2003 R2 Platform SDK Full Download
Windows Build Prerequisites - MDC

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です