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

kog's Wiki - ruby-fcgi-0.8.4_VC7 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

* $ はじまりは 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}}