Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

The Backyard - HowToBuildRjbOnCygwin Diff

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

このページには古い情報がありますRjbはバージョン1.0.0からRubyGemsパッケージになりましたバージョンに合致したところを参照してくださいまたCygwinへのインストールの問題もほとんど解決されています

!バージョン1.0.0以降の手順

Rjbはバージョン1.0.0でRubyGemsパッケージになりました。またCygwinへのインストールの問題もほとんど解決されています。

JAVA_HOME環境変数をCygwinパスになるように一時的に変更します。

%export JAVA_HOME=$(cygpath -ua $JAVA_HOME)

新しいJAVA_HOMEを使ってパスを設定します。

%export PATH=$PATH:$JAVA_HOME/bin

RubyGemsを使ってインストールします。バージョンを選択する際には1.(ruby)を選んでください。2.(mswin32)ではありません。

%gem install rjb

load errorが出る場合は環境変数RUBYOPTSに-rubygemsを設定してみてください。次のコマンドを実行して問題がなければ正常にインストールされています。

#テスト@bash
%RUBYOPT=-rubygems ruby -rrjb -e 'p 0'

1.0.0では環境変数を設定しないと中途半端にインストールされてしまうようです。その場合は''`gem uninstall rjb'''してから、環境変数を設定後インストールし直してください。

!1.0.0より前のバージョンの場合

$JAVA_HOME/include/win32/jni_md.hでtypedef __int64 jlong;されているが、CygwinのGCCでは__int64という型がないのでコンパイルに失敗する。これには[[対処法|http://discypus.jp/pukiwiki/pukiwiki.php?cmd=read&page=Java%2FJNI%2FTips]]がある。

!方法

対処法通りにjni_md.hを書き換えます。もしくは以下のパッチを適用してください。
--- jni_md.h~   2005-06-27 12:09:23.857897600 +0900
+++ jni_md.h    2005-06-27 10:03:30.827172800 +0900
@@ -13,7 +13,11 @@
  #define JNICALL __stdcall

  typedef long jint;
+#ifdef __GNUC__
+typedef long long jlong;
+#else
  typedef __int64 jlong;
+#endif
  typedef signed char jbyte;

  #endif /* !_JAVASOFT_JNI_MD_H_ */                          

さらにJAVA_HOME環境変数をCygwinパスになるように一時的に変更します。

%export JAVA_HOME=$(cygpath -u $JAVA_HOME)

新しいJAVA_HOMEを使ってパスを設定します。

%export PATH=$PATH:$JAVA_HOME/bin

あとは普通にインストール(% ruby setup.rb)します。

!mswin32の場合

mswin32バイナリが欲しければ、とりあえずVisual C++ Toolkit 2003とPlatformSDKのCoreSDKと.Net SDKを入れたらコンパイルできる。ポインタ的には

*http://www7.plala.or.jp/hop-step-jump/c_setting03.html
*http://note3.nifty.com/cgi-bin/note.cgi?u=GHE01746&n=1&p=2
**雪見酒さんがRuby自体をコンパイルしてるので参考になると思う。


!未解決の不具合

ところで、mingwバイナリを作ろうとしたときに、Makefileの"CFLAGS = -I**"の部分はバックスラッシュが入るようになっている(MinGWバイナリのFile::ALT_SEPARATORが"\\"なので)が、MinGWツール自身のパスの区切りは"/"なので書き換えないとコンパイルできない。mswin32とmingw32は動作に違いが無いということになっているのでextconf.rbでどうにかする必要がある?( File::ALT_SEPARATOR.nil? || /mingw/ =~ RUBY_PLATFORM)そもそもJAVA_HOME環境変数自体のパス区切り文字がどうなっているかわからないので無駄だけど。

!謝辞

すばらしい1.0.0では環境変数を設定しないと中途半端にインストールされてしまうようですどうもありがとうその場合は''`gem uninstall rjb'''でアンインストールしてから、環境変数を設定後、インストールし直してください