Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  wikifarm  Login

ruby-fcgi-0.8.4_VC7

  • $ はじまりは cygwinのコマンドライン(bash)から
  • > はじまりは コマンドプロンプト。

FastCGIがコンパイルできたみたいだし、拡張ライブラリ版、なんとかなんないか。

展開します。

 $ cd c:/home/kog/src
 $ tar -zxvf ruby-fcgi0.8.4.tar.gz

コンパイラが使えるように。

 C:\home\kog> "C:\Program Files\Microsoft Visual Studio .NET\Common7\Tools\"vsvars32.bat
 Setting environment for using Microsoft Visual Studio .NET tools.
 (If you also have Visual C++ 6.0 installed and wish to use its tools
 from the command line, run vcvars32.bat for Visual C++ 6.0.)
 C:\home\kog>

まずRubyのバージョンを確認しとこう。

 C:\home\kog> cd src\ruby-fcgi-0.8.4
 C:\home\kog\src\ruby-fcgi-0.8.4>c:\cygwin\bin\which -a ruby
 /cygdrive/c/home/kog/bin/ruby

 C:\home\kog\src\ruby-fcgi-0.8.4>ruby -v
 ruby 1.8.0 (2003-08-04) [i386-mswin32]

 C:\home\kog\src\ruby-fcgi-0.8.4>

やってみよう。

 C:\home\kog\src\ruby-fcgi-0.8.4>ruby install.rb config
 install.rb:15: warning: instance_methods: parameter will default to 'true' as of
  1.8.1
 install.rb: entering config phase...
 ---> lib
 <--- lib
 ---> ext
 ---> ext/fcgi
 c:/home/kog/bin/ruby C:/home/kog/src/ruby-fcgi-0.8.4/ext/fcgi/extconf.rb
 checking for fcgiapp.h... no
 <--- ext/fcgi
 <--- ext
 install.rb: config done.

fcgiapp.h が見つからないらしい。そりゃそーだ。~/includeって作ってそれらしいのをコピーしてみるかいな。

 C:\home\kog\src\ruby-fcgi-0.8.4> cd ..\fcgi-2.4.0\include
 C:\home\kog\src\fcgi-2.4.0\include> mkdir c:\home\kog\include
 C:\home\kog\src\fcgi-2.4.0\include> copy *.h c:\home\kog\include
 C:\home\kog\src\fcgi-2.4.0\include> cd c:\home\kog\include
 C:\home\kog\include> del fcgi_config_x86.h

作ったのはいいけど、http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=mkmf.rb;em=dir_config#dir_config によると extconf.rb の引数でわたさないとだめらしい。直にやってみますかね。

 C:\home\kog\src\ruby-fcgi-0.8.4> cd ext/fcgi
 C:\home\kog\src\ruby-fcgi-0.8.4\ext\fcgi> ruby extconf.rb --with-fcgi-dir=c:/home
 /kog
 checking for fcgiapp.h... yes
 checking for FCGX_Accept() in -lfcgi... no
 C:\home\kog\src\ruby-fcgi-0.8.4>

noっていわれても... mkmf.logを見れば細かいことがわかるのか?

 ...
 have_library: checking for FCGX_Accept() in -lfcgi... --------------------
 cl -nologo -Feconftest -Ic:/home/kog/lib/ruby/1.8/i386-mswin32 -Ic:/home/kog/lib/ruby/1.8/i386-mswin32 -Ic:/home/kog/include -I. -I./.. -I./../missing -MD -Zi -O2b2xg- -G6 conftest.c msvcrt-ruby18-static.lib fcgi.lib oldnames.lib user32.lib advapi32.lib wsock32.lib -link -libpath:c:/home/kog/lib -libpath:c:/home/kog/lib -stack:0x2000000
 cl : コマンド ライン warning D4029 : 標準の編集コンパイラでは最適化は使用できません。
 cl : コマンド ライン warning D4002 : 認識不可能なオプション '-Og-' を無視しました。
 conftest.c
 LINK : fatal error LNK1104: コンパイラは、ファイル 'fcgi.lib' を開くことができません。

fcgi.lib ? 困った。FCGIをコンパイルしたときはlibfcgi.lib と libfcgi.dll ができてたのに。名前変えていけるのかしら。やってみるか。

 C:\home\kog> mkdir lib
 C:\home\kog\lib>copy ..\src\fcgi-2.4.0\libfcgi\Release\libfcgi.lib libfcgi.lib
         1 個のファイルをコピーしました。
 C:\home\kog\lib>copy ..\src\fcgi-2.4.0\libfcgi\Release\libfcgi.lib fcgi.lib
         1 個のファイルをコピーしました。
 C:\home\kog\lib>cd ..\src\ruby-fcgi-0.8.4\ext\fcgi
 C:\home\kog\src\ruby-fcgi-0.8.4\ext\fcgi>ruby extconf.rb --with-fcgi-dir=c:/home
 /kog
 checking for fcgiapp.h... yes
 checking for FCGX_Accept() in -lfcgi... yes
 creating Makefile

おおっ!いったか?

 C:\home\kog\src\ruby-fcgi-0.8.4\ext\fcgi>nmake
 Microsoft(R) Program Maintenance Utility Version 7.00.9466
 Copyright (C) Microsoft Corporation.  All rights reserved.

         cl -nologo -MD -Zi -O2b2xg- -G6 -I. -Ic:/home/kog/lib/ruby/1.8/i386-mswi
 n32 -Ic:/home/kog/lib/ruby/1.8/i386-mswin32 -I. -DHAVE_FCGIAPP_H -Ic:/home/kog/i
 nclude -I. -I./.. -I./../missing -c -Tcfcgi.c
 cl : コマンド ライン warning D4029 : 標準の編集コンパイラでは最適化は使用できま
 せん。
 cl : コマンド ライン warning D4002 : 認識不可能なオプション '-Og-' を無視しまし
 た。
 fcgi.c
 fcgi.c(9) : fatal error C1083: インクルード ファイルを開けません。'unistd.h': No
  such file or directory
 NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
 Stop.
 C:\home\kog\src\ruby-fcgi-0.8.4\ext\fcgi>

こんどはなんだ?unistd.h がないって?unistd.hって...unix_standard header? ということは、UnixとWindowsで違うところを吸収してるソースがrubyの中にもある?

 $ cd c:/home/kog/src/ruby-1.8.0/ext
 $ grep unistd.h */*.c
 etc/etc.c:#include <unistd.h>
 openssl/ossl_ssl.c:#  include <unistd.h> /* for read(), and write() */
 pty/pty.c:#include <unistd.h>
 readline/readline.c:#include <unistd.h>
 sdbm/_sdbm.c:#include <unistd.h>
 socket/getaddrinfo.c:#include <unistd.h>
 socket/socket.c:#include <unistd.h>

socket/socket.cを覗くと、

 ...
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 ...

もうちょっとなんか条件があってもよさそうなんだけどこれだけ? 同じように囲ってみますかね。

 C:\home\kog\src\ruby-fcgi-0.8.4\ext\fcgi>nmake
 Microsoft(R) Program Maintenance Utility Version 7.00.9466
 Copyright (C) Microsoft Corporation.  All rights reserved.

         cl -nologo -MD -Zi -O2b2xg- -G6 -I. -Ic:/home/kog/lib/ruby/1.8/i386-mswi
 n32 -Ic:/home/kog/lib/ruby/1.8/i386-mswin32 -I. -DHAVE_FCGIAPP_H -Ic:/home/kog/i
 nclude -I. -I./.. -I./../missing -c -Tcfcgi.c
 cl : コマンド ライン warning D4029 : 標準の編集コンパイラでは最適化は使用できま
 せん。
 cl : コマンド ライン warning D4002 : 認識不可能なオプション '-Og-' を無視しまし
 た。
 fcgi.c
         cl -nologo -LD -Fefcgi.so fcgi.obj msvcrt-ruby18.lib fcgi.lib  oldnames.
 lib user32.lib advapi32.lib wsock32.lib  -link -incremental:no -pdb:none -dll -l
 ibpath:"c:/home/kog/lib" -libpath:"c:/home/kog/lib" -def:fcgi.def
 LINK : warning LNK4224: /PDB:NONE はサポートされていません。無視されます。
    ライブラリ fcgi.lib とオブジェクト fcgi.exp を作成中

 C:\home\kog\src\ruby-fcgi-0.8.4\ext\fcgi>

ででで、できたかも...

 C:\home\kog\src\ruby-fcgi-0.8.4\ext\fcgi>cd ..\..\
 C:\home\kog\src\ruby-fcgi-0.8.4>ruby install.rb install
 install.rb:15: warning: instance_methods: parameter will default to 'true' as of
  1.8.1
 install.rb: entering install phase...
 ---> lib
 mkdir -p c:/home/kog/lib/ruby/site_ruby/1.8/
 install fcgi.rb c:/home/kog/lib/ruby/site_ruby/1.8/
 <--- lib
 ---> ext
 ---> ext/fcgi
 mkdir -p c:/home/kog/lib/ruby/site_ruby/1.8/i386-msvcrt/.
 install fcgi.so c:/home/kog/lib/ruby/site_ruby/1.8/i386-msvcrt/.
 <--- ext/fcgi
 <--- ext
 install.rb: install done.

こんなのでどうかな

 C:\home\www\fcgi-bin>type 1.fcgi
 #!c:/home/kog/bin/ruby
 require 'fcgi'

 FCGI.each do |req|
   out = req.out
   out.print "Content-Type: text/plain\r\n"
   out.print "\r\n"
   out.print Time.now.to_s
   req.finish
 end

ブラウザから実行だ。それっ!

 $ tail -f logs/access.log
 ...
 [Sun Nov 23 17:41:32 2003] [notice] FastCGI: process manager initialized
 [Sun Nov 23 17:41:50 2003] [warn] FastCGI: (dynamic) server "c:/home/www/fcgi-bi
 n/1.fcgi" started (pid 1220)

画面

 Sun Nov 23 17:41:50 東京 (標準時) 2003

うれしすぎる(泣)。でもこんなんでいいのか?もっとテストしないと本番適用は、こわいな。

別のマシンに持っていってみた。

ruby を持ってったときは msvcr70.dll がいるといわれたが、これを使うと msvcp70.dll がいるとのこと。GoogleJ:msvcp70.dll


  • 2009-09-13 (Sun) 22:38:49 cljqfnojq : xaWowrvJJwYFSgWj
  • 2009-10-23 (Fri) 06:04:15 Alex65 : The largest of the remaining resources is coal, which comprises 23% of the total. ,
(comment plugin is disabled).
Last modified:2009/10/23 06:04:15
Keyword(s):
References: