Top / Tips / BuildOnWindows / Apache

対象

  • Apache 2.0.55 (mod_deflate, mod_ssl)
  • Apache 2.2.0 (mod_deflate, mod_ssl)

参考

必要なもの

以下のものはCygwinをインストールしていれば基本的には不要

なお、Cygwinを使った場合confファイルやperlスクリプトの改行コードが0x0aになる等の小さな違いは出る。*1

手順

作業ディレクトリはD:\work\apache

Apache 2.0.55 (mod_deflate, mod_ssl)

  • zlibの最新は1.2.3だが、そのままでも前もってzlibをbuildしても、
    deflate.c
    NMAKE : fatal error U1073: '"..\..\srclib\zlib\infblock.h"' のビルド方法が指定されていません。
    Stop.
    とエラーで止まる。

アーカイブを展開

  1. D:\work\apache\に展開
    • httpd-2.0.55-win32-src.zip
    D:\work
    \---apache
        +---httpd-2.0.55
            +---build
            |   +---pkg
            |   \---...
            \---test
  2. D:\work\apache\httpd-2.0.55\srclib\に展開
    • openssl-0.9.8a.tar.gz
      • ディレクトリ名をopensslに。
    • zlib-1.1.4.tar.gz
      • ディレクトリ名をzlibに。
    D:\work\apache\httpd-2.0.55\srclib
    ...
    +---openssl
    |   +---apps
    ... ...
    \---zlib
        +---amiga
        ...
  3. 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を使う場合)
      • awk.exeに名前変更するのを忘れずに。
    • 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

コマンドラインからのビルド

  1. コマンドプロンプトを開く。
    • スタート メニュー→プログラム→Microsoft Visual Studio .NET 2003→Visual Studio .NET ツール→Visual Studio .NET 2003 コマンド プロンプト でも良い
      • この場合、"%VS71COMNTOOLS%vsvars32.bat"の実行は省略出来る。
  2. 環境変数PATHにD:\work\apache\build\binを追加
    set PATH=%PATH%;D:\work\apache\build\bin
    • fc.exeとperlがあればいいので極端な話
      set PATH=%systemroot%\system32;C:\usr\bin;D:\work\apache\build\bin
      でも動く :p
    • Cygwinが入っていれば不要*3
  3. "%VS71COMNTOOLS%vsvars32.bat"を実行する。
    "で囲む必要があるので注意*4
    • "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"
      D:\work\apache\httpd-2.0.55>"%VS71COMNTOOLS%vsvars32.bat"
      Setting environment for using Microsoft Visual Studio .NET 2003 tools.
      (If you have another version of Visual Studio or Visual C++ installed and wish
      to use its tools from the command line, run vcvars32.bat for that version.)
  4. opensslのビルド
    1. cd srclib\openssl
    2. perl Configure VC-WIN32
    3. 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>
    4. 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待つ
    5. cd out32dll
    6. ..\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>
  5. cd \work\apache\httpd-2.0.55
  6. 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待つ
  7. 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(統合開発環境)からのビルド

  1. opensslをビルド
    コマンドラインからビルドしておく必要があるので、コマンドラインからのビルドの1.~4.を前もって実行しておく。
  2. 「スタート」ボタン→「プログラム」→「Microsoft Visual Studio .NET 2003」→「Microsoft Visual Studio .NET 2003」を開く
  3. 「ツール」→「オプション」を開き、「プロジェクト」→「VC++ ディレクトリ」を選択する
    実行可能ファイルの一番上にD:\work\apache\build\binを追加する。
    VS-01.png
  4. D:\work\apache\httpd-2.0.55\Apache.dswを開く
    VS-02.png
  5. 変換して開くに「すべてはい」と答える
    VS-03.png
  6. 「ビルド」→「構成マネージャ」を開き、「アクティブソリューション構成」をReleaseにする
    VS-04.png
  7. 右側の「ソリューションエクスプローラ」からInstallBin?を右クリックし、「プロパティ」を開く
    VS-05.png
  8. InstallBin?プロパティ」の「NMake」を選択し、インストール先を適当に設定する
    VS-06.png
  9. 「ビルド」→「ソリューションのビルド」
    VS-07.png
    VS-08.png

何故かコマンドラインからのビルドより、一部のバイナリが若干大きく出来るようです。

Apache 2.2.0 (mod_deflate, mod_ssl)

  • 基本的には2.0.55と同じ

コマンドラインからのビルド

  1. 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を使用した。
  2. コマンドは以下の通り
    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弱になる。


*1 Windowsは0x0d 0x0a
*2 他のgnuwin32ツールにもdep.zipはあるがbisonのものが最新な模様。
*3 Cygwinのusr/binにパスが通っているはず
*4 パスに空白が含まれるので。
*5 8分@1.8GHz、5分強@3.0GHz
*6 10分@1.8GHz、7分@3.0GHz

添付ファイル: fileVS-06.png 224件 [詳細] fileVS-07.png 470件 [詳細] fileVS-08.png 516件 [詳細] fileVS-04.png 224件 [詳細] fileVS-03.png 210件 [詳細] fileVS-01.png 231件 [詳細] fileVS-02.png 237件 [詳細] fileVS-05.png 492件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 この下に新規 一覧 単語検索 最終更新   ヘルプ   リンク元   最終更新のRSS
Last-modified: Sat, 05 May 2007 17:56:28 JST (1010d)