VC++2005 Express Ed. で Apache2 をコンパイルする

日記に書くネタも無くさらに今日は会社が早く終わって暇なので仕方なく Visual C++ 2005 Express Edition で Apache2 はコンパイルできるか実験。
ちなみに今回ダウンロードしているものはすべてタダ&商用利用可能ぽい。


1.Microsoft Visual C++ 2005 Express Edition 日本語版をダウンロード&インストール

http://thesource.ofallevil.com/japan/msdn/vstudio/express/visualc/
とりあえずCDイメージ落としてDAEMON Tools使ってインストールした。


2.Windows Server 2003 R2 Platform SDKをダウンロード&インストール

http://www.microsoft.com/downloads/details.aspx?FamilyId=E15438AC-60BE-41BD-AA14-7F1E0F19CA0D&displaylang=en
動かしてるのはWindows XPでなんだけど、今のところこいつが最新。やっぱりCDイメージ。


3.Apache HTTP Server 2.2をダウンロード&展開

http://sunsite.tus.ac.jp/pub/apache/httpd/
ダウンロードするのは httpd-2.2.2-win32-src.zip が Windows には幸せ。
C:\ 直下に展開すると C:\httpd-2.2.2 というフォルダが出来る。


4.awkをダウンロード

http://cm.bell-labs.com/cm/cs/who/bwk/
Windows executableで検索かけるとawk95.exeがダウンロードできるので、そいつを awk.exe にリネームして "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin" とかに放り込んでおくとよろしい。


5.Vusual Studio 2005 コマンドプロンプトを起動

プログラムメニューの Visual C++ 2005 Express Edition の中を探すと見つかるので、そいつを起動。


6.Platform SDK の環境を設定

以下のコマンドを実行する。途中のパスが長ったらしいけどmiだけ打ってタブキーをパカパカ打ってればそのうち出てくる。ていうかコピー&ペースト?
オプションはWindows XP用。
>"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\SetEnv.Cmd" /XP32 /RETAIL


7.ソースディレクトリに移動

>cd \httpd-2.2.2


8.コンパイルオプション置き換え

なんかー、/MD オプションつきでコンパイルすると msvcr80.dll 動的ライブラリ付じゃなきゃプログラムが動かなくなるみたいで、コンパイルオプションを変更。
まあ、何も考えず以下をコピーしてコマンドプロンプトにペーストして実行してください。せっかくだから先にダウンロードした awk を活用。
やってることは、httpd-2.2.2 ディレクトリ以下のすべての *.mak ファイル中の cl.exe のコンパイルオプションを /MD から /MT に置き換えてるって話です。



echo {sub(/CPP_PROJ=\/nologo \/MD/,"CPP_PROJ=/nologo /MT",$0);print($0);}>modmd.awk
for /F "usebackq" %i in (`findstr /C:"CPP_PROJ=/nologo /MD" /S /M *mak`) do (
move %i %i.org
awk -f modmd.awk %i.org>%i
del %i.org
)
del modmd.awk

echo {sub(/cl.exe \/nologo \/MD/,"cl.exe /nologo /MT",$0);print($0);}>modmd2.awk
move libhttpd.mak libhttpd.mak.org
awk -f modmd2.awk libhttpd.mak.org>libhttpd.mak
del libhttpd.mak.org
del modmd2.awk


9.Apacheコンパイル&インストール

以下のコマンドを実行してHTTPDコンパイル&インストール。ビルド中の画面を眺めながらぼけーと放心しているのが正しい姿勢か。
問題なく終わると、C:\Apache2 にコンパイルされた HTTPD がインストールされています。
>nmake -f Makefile.win installr


10.Apache2 を起動
Apache2起動!!
>cd \Apache2\bin
>httpd


正しく起動がされたら、httpdはプロンプトを戻しません。Ctrl+C キー押せば止まる。
IEhttp://localhost にアクセスして、"It works!!" と表示されればとりあえずコンパイル成功。



ちなみにWindowsApacheコンパイルする公式の文書はたぶんこいつです。
http://www.inpaku.kyocera.co.jp/manual/win_compiling.html.ja.jis