対象 †
- Apache 2.0.55 (mod_deflate, mod_ssl)
- Apache 2.2.0 (mod_deflate, mod_ssl)
参考 †
必要なもの †
- Apache
- httpd-2.0.55-win32-src.zip
- httpd-2.2.0-win32-src-rev2.zip
- zlib
- openssl
- fc.exe
- %systemroot%\system32に元々入っている。
以下のものはCygwinをインストールしていれば基本的には不要 †
なお、Cygwinを使った場合confファイルやperlスクリプトの改行コードが0x0aになる等の小さな違いは出る。*1
手順 †
作業ディレクトリはD:\work\apache
Apache 2.0.55 (mod_deflate, mod_ssl) †
アーカイブを展開 †
- D:\work\apache\に展開
- httpd-2.0.55-win32-src.zip
D:\work
\---apache
+---httpd-2.0.55
+---build
| +---pkg
| \---...
\---test
- D:\work\apache\httpd-2.0.55\srclib\に展開
- openssl-0.9.8a.tar.gz
- zlib-1.1.4.tar.gz
D:\work\apache\httpd-2.0.55\srclib
...
+---openssl
| +---apps
... ...
\---zlib
+---amiga
...
- D:\work\apache\build\に展開
もちろん場所は何処でも良いが、あとでパスを通す必要があるのでまとめておいた方が楽。
なお、上にも書いたようにCygwinがインストールされていれば不要。
ただし、Cygwinのawk.exeはgawk.exeへのsymlinkとなっていて、Windowsではsymlinkは動作しないのでawk.exeを使う作業が失敗する。
例えばD:\work\apache\install\cgi-bin\printenv.plなどのファイルが0バイトの空ファイルとして出来上がる。
なのでawk.exeを削除しgawk.exeをコピーしてawk.exeとする必要がある。
- awk95.exeをD:\work\apache\build\bin\にコピー
- gawk-3.1.3-2-bin.zip(gawkを使う場合)
- bison-1.875-4-bin.zip
- bison-1.875-4-dep.zip
- flex-2.5.4a-1-bin.zip
- sed-4.1.4-bin.zip
D:\work\apache\build
+---bin
| awk.exe
| bison.exe
| flex++.exe
| flex.exe
| libiconv2.dll
| libintl3.dll
| m4.exe
| sed.exe
| yacc
+---contrib
| +---bison
| +---flex
| \---sed
+---include
+---man
+---manifest
\---share
コマンドラインからのビルド †
- コマンドプロンプトを開く。
- スタート メニュー→プログラム→Microsoft Visual Studio .NET 2003→Visual Studio .NET ツール→Visual Studio .NET 2003 コマンド プロンプト でも良い
- この場合、"%VS71COMNTOOLS%vsvars32.bat"の実行は省略出来る。
- 環境変数PATHにD:\work\apache\build\binを追加
set PATH=%PATH%;D:\work\apache\build\bin
- "%VS71COMNTOOLS%vsvars32.bat"を実行する。
"で囲む必要があるので注意*4
- opensslのビルド
- cd srclib\openssl
- perl Configure VC-WIN32
- ms\do_masm
D:\work\apache\httpd-2.0.55\srclib\openssl>ms\do_masm
Generating x86 for MASM assember
Bignum
DES
"crypt(3)"
Blowfish
CAST5
RC4
MD5
SHA1
RIPEMD160
RC5\32
D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mkfiles.pl 1>MINFO
D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mk1mf.pl VC-WIN32 1>ms\nt.mak
D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mk1mf.pl dll VC-WIN32 1>ms\ntdll.mak
D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mkdef.pl 32 libeay 1>ms\libeay32.def
D:\work\apache\httpd-2.0.55\srclib\openssl>perl util\mkdef.pl 32 ssleay 1>ms\ssleay32.def
D:\work\apache\httpd-2.0.55\srclib\openssl>
- nmake -f ms\ntdll.mak
D:\work\apache\httpd-2.0.55\srclib\openssl>nmake -f ms\ntdll.mak
Microsoft(R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
Building OpenSSL
...
しばし*5待つ
- cd out32dll
- ..\ms\test
D:\work\apache\httpd-2.0.55\srclib\openssl\out32dll>..\ms\test
rsa_test
PKCS #1 v1.5 encryption/decryption ok
...
TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 512 bit RSA
1 handshakes of 256 bytes done
passed all tests
D:\work\apache\httpd-2.0.55\srclib\openssl\out32dll>
- cd \work\apache\httpd-2.0.55
- nmake /f Makefile.win _apacher
D:\work\apache\httpd-2.0.55>nmake /f Makefile.win _apacher
Microsoft(R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
INSTDIR = \Apache2
SERVERNAME = localhost
PORT = 80
...
また少し*6待つ
- nmake -f Makefile.win installr INSTDIR="D:\work\apache\install"
D:\work\apache\httpd-2.0.55>nmake -f Makefile.win installr INSTDIR="D:\work\apache\install"
Microsoft(R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
INSTDIR = D:\work\apache\install
SERVERNAME = localhost
PORT = 80
...
D:\work\apache\httpd-2.0.55>
これでD:\work\apache\install以下にバイナリがまとめられる。
なお、INSTDIRを指定しないとD:\Apache2にまとめられる。
IDE(統合開発環境)からのビルド †
- opensslをビルド
コマンドラインからビルドしておく必要があるので、コマンドラインからのビルドの1.~4.を前もって実行しておく。
- 「スタート」ボタン→「プログラム」→「Microsoft Visual Studio .NET 2003」→「Microsoft Visual Studio .NET 2003」を開く
- 「ツール」→「オプション」を開き、「プロジェクト」→「VC++ ディレクトリ」を選択する
実行可能ファイルの一番上にD:\work\apache\build\binを追加する。
- D:\work\apache\httpd-2.0.55\Apache.dswを開く
- 変換して開くに「すべてはい」と答える
- 「ビルド」→「構成マネージャ」を開き、「アクティブソリューション構成」をReleaseにする
- 右側の「ソリューションエクスプローラ」からInstallBin?を右クリックし、「プロパティ」を開く
- 「InstallBin?プロパティ」の「NMake」を選択し、インストール先を適当に設定する
- 「ビルド」→「ソリューションのビルド」
何故かコマンドラインからのビルドより、一部のバイナリが若干大きく出来るようです。
Apache 2.2.0 (mod_deflate, mod_ssl) †
コマンドラインからのビルド †
- zlibは前もってbuildしておかないと扱えない模様
mod_deflate.c
link.exe @C:\Temp\nm1287.tmp
LINK : fatal error LNK1181: 入力ファイル 'zlib.lib' を開けません。
NMAKE : fatal error U1077: 'link.exe' : リターン コード '0x49d'
- zlib 1.1.4は
D:\work\apache\httpd-2.2.0\srclib\zlib>nmake /f msdos\Makefile.w32
でbuild出来るが、Apacheのbuild中に
mod_deflate.c
link.exe @C:\Temp\nm1664.tmp
ライブラリ .\Release\mod_deflate.lib とオブジェクト .\Release\mod_deflate.exp を作成中
LINK : warning LNK4098: defaultlib 'LIBC' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
という警告が出るため、警告が出ない1.2.3を使用した。
- コマンドは以下の通り
perlはC:\usr\bin\perl.exeを想定。
set PATH=%systemroot%\system32;C:\usr\bin;D:\work\apache\build\bin
call "%VS71COMNTOOLS%vsvars32.bat"
cd /d D:\work\apache\httpd-2.2.0
cd srclib\openssl
perl Configure VC-WIN32
call ms\do_masm
nmake -f ms\ntdll.mak
cd out32dll
call ..\ms\test
cd \work\apache\httpd-2.2.0\srclib\zlib
nmake -f win32/Makefile.msc
cd \work\apache\httpd-2.2.0
nmake /f Makefile.win _apacher
nmake -f Makefile.win installr INSTDIR="D:\work\apache\install"
なお、このままバッチファイルとして実行出来るはずです。
不要ファイル †
D:\work\apache\install>del *.pdb /s/q
削除したファイル - D:\work\apache\install\bin\ab.pdb
削除したファイル - D:\work\apache\install\bin\Apache.pdb
...
削除したファイル - D:\work\apache\install\modules\util_ldap.pdb
D:\work\apache\install>rd symbols /s/q
pdbはデバッグ用情報ファイルらしいので不要。これを消すとinstall以下が80MB強から20MB弱になる。