神代@地球流体電脳倶楽部と申します.

我々のグループでは,多次元データ可視化ライブラリ DCL を
Ruby から扱えるように,RubyDCL という拡張ライブラリを
開発しています.

Cygwin上で この RubyDCL をインストールしようとしていますが,
うまくいきません.
RubyDCL 中で NArray を使用しているのですが,どうも NArray
へのリンクがうまくいかないようなのです.

Cygwin 1.3.20-1, gcc 3.2-3 で,
やったことは,以下のとおりです.

1. DCL-5.2-C.3 のインストール
$ ./configure
$ make
$ make install
* デモ(demo/grph2/ximage/ximg01.c)が動くことを確認

2. Ruby (1.6.8) のインストール
$ ./configure --enable-shared
$ make
$ make test
$ make install

3. NArray (0.5.7) のインストール
$ ruby extconf.rb
$ make
$ make site-install
* test/ 内のスクリプトが動くことを確認

4. RubyDCL (1.1.2)のインストール
$ make
....途中は順調そうなのだけど....
最後のdllwrapのところで 'undefined reference' がたくさん

という感じなのです.

[ruby-ext:02097]に

| CygwinでNArrayを他の拡張ライブラリからリンクするとき、
| defファイルだけではうまくいかなかったので、extconf.rb に
| 
| if RUBY_PLATFORM =~ /cygwin|mingw/
|   CONFIG["DLDFLAGS"] << " --output-lib libnarray.a"
| end
| 
| と書いてインポートライブラリ?を作るようにしましたが

とあったので,この libnarray.a をうまく使えば解決するので
しょうか? 具体的にどのように使えばよいのでしょう.

ruby-dcl-1.1.2/src/Makefile の

LIBS = -L. -l$(RUBY_SO_NAME)  -lcrypt

のところに -lnarray と付け加えてもう一度makeすると,数は減るのですが

dllwrap --target=cygwin --as=as --dlltool-name=dlltool --driver-name=gcc --expor
t-all -s --def=dcl_raw.def -L/usr/local/lib/ruby/site_ruby/1.6/i586-cygwin -L/us
r/local/lib  -o dcl_raw.so dcl_cary2obj.o dcl_obj2cary.o dummy.o grph1_csgi.o gr
ph1_scpack.o grph1_sgpack.o grph1_slpack.o grph1_stpack.o grph1_swpack.o grph2_g
rpack.o grph2_ucpack.o grph2_udpack.o grph2_uepack.o grph2_ugpack.o grph2_uhpack
.o grph2_ulpack.o grph2_umpack.o grph2_uspack.o grph2_uupack.o grph2_uvpack.o gr
ph2_uwpack.o grph2_uxpack.o grph2_uypack.o grph2_uzpack.o init.o math1_blklib.o
math1_chrlib.o math1_fnclib.o math1_gnmlib.o math1_ifalib.o math1_indxlib.o math
1_intlib.o math1_lrllib.o math1_oslib.o math1_rfalib.o math1_rfblib.o math1_subl
ib.o math1_syslib.o math1_vialib.o math1_viblib.o math1_vralib.o math1_vrblib.o
math1_xfclib.o math2_fftlib.o math2_intrlib.o math2_rnmlib.o math2_shtlib.o math
2_vstlib.o misc1_chnlib.o misc1_datelib.o misc1_fmtlib.o misc1_misclib.o misc1_r
andlib.o misc1_timelib.o -L. -lcygwin-ruby16  -lcrypt -lnarray -L/usr/local/lib
-L/usr/X11R6/lib -L/home/koshiro/dcl-5.2-C/f2clib -L/usr/local/lib -lcdcl52 -lf2
c4dcl -lSM -lICE -lX11 -lm
dcl_cary2obj.o(.text+0x338): In function `crealary2na':
/home/koshiro/ruby-dcl-1.1.2/src/dcl_cary2obj.c:288: undefined reference to `_cN
Array'
dcl_cary2obj.o(.text+0x3c0): In function `cintegerary2na':
/home/koshiro/ruby-dcl-1.1.2/src/dcl_cary2obj.c:316: undefined reference to `_cN
Array'
dcl_cary2obj.o(.text+0x472): In function `clogicalary2na':
/home/koshiro/ruby-dcl-1.1.2/src/dcl_cary2obj.c:344: undefined reference to `_cN
Array'
dcl_obj2cary.o(.text+0xf5): In function `dcl_obj2cintegerary':
/home/koshiro/ruby-dcl-1.1.2/src/dcl_obj2cary.c:86: undefined reference to `_cNA
rray'
dcl_obj2cary.o(.text+0x1a7): In function `dcl_obj2crealary':
/home/koshiro/ruby-dcl-1.1.2/src/dcl_obj2cary.c:112: undefined reference to `_cN
Array'
dcl_obj2cary.o(.text+0x25d):/home/koshiro/ruby-dcl-1.1.2/src/dcl_obj2cary.c:166:
 more undefined references to `_cNArray' follow
collect2: ld returned 1 exit status
dllwrap: gcc exited with status 1
make: *** [dcl_raw.so] Error 1


となってしまいます.
結局,narray.h で定義されるところの

extern VALUE cNArray, cNArrayScalar, cComplex;

の cNArray がわからないようなのです.

何かわかる方がおられましたら,教えてください.
よろしくお願いします.


-- 
神代  剛 / こうしろ つよし