The Backyard - HowToBuildRjbOnCygwin Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
Rjbはバージョン1.0.0でRubyGemsパッケージになりました。また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環境変数自体のパス区切り文字がどうなっているかわからないので無駄だけど。
!謝辞