ruby-listのみなさま、初めまして。はらだと申します。

この度、うちの BeOS R4.5.2(Intel) が入っているマシンに ruby-1.4.2 を
導入しようとしたのですが、どうもうまく行かないので、以下にその経緯を
書かせて頂きます。(長文です、御注意を)

まず、普通に make したところ、以下のようになりました。

---- ここから ----
xterm@rtype:/boot/home/TMP/ruby-1.4.2/>gcc --version
2.9-beos-980929
xterm@rtype:/boot/home/TMP/ruby-1.4.2/>ld --version
GNU ld 2.9-beos-980929
Copyright 1997 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.
  Supported emulations:
   elf_i386_be
xterm@rtype:/boot/home/TMP/ruby-1.4.2/>./configure --prefix=/boot/home/config 
[snip]
xterm@rtype:/boot/home/TMP/ruby-1.4.2/>make
[snip]
make[1]: Entering directory `/boot/home/TMP/ruby-1.4.2/ext/socket'
gcc -fPIC -I/boot/home/TMP/ruby-1.4.2 -I/boot/home/TMP/ruby-1.4.2 -g -O2 -I.  -D
ss_family=__ss_family -Dss_len=__ss_len -I/boot/home/config/include -DHAVE_INET_
NTOA -DHAVE_SOCKET -DHAVE_GETHOSTNAME   -c socket.c -o socket.o
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c: In function `ip_addrsetup':
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c:518: `PF_UNSPEC' undeclared (first
 use in this function)
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c:518: (Each undeclared identifier i
s reported only once
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c:518: for each function it appears
in.)
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c: In function `open_inet':
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c:700: `PF_UNSPEC' undeclared (first
 use in this function)
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c: In function `sock_s_getaddrinfo':
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c:1697: `PF_UNSPEC' undeclared (firs
t use in this function)
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c: In function `sock_s_getnameinfo':
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c:1782: `PF_INET' undeclared (first
use in this function)
/boot/home/TMP/ruby-1.4.2/ext/socket/socket.c:1790: `PF_UNSPEC' undeclared (firs
t use in this function)
make[1]: *** [socket.o] Error 1
make[1]: Leaving directory `/boot/home/TMP/ruby-1.4.2/ext/socket'
---- ここまで ----

socket がうまく作れないようなので、「/boot/develop/headers/be/socket.h」
(「/boot/develop/headers/posix/sys/socket.h」は
 このファイルを #include しているだけ)
を見てみた所、実際に上で undeclared といわれている`PF_UNSPEC'等のシンボルは
一切定義されていませんでした。
そこで、てもとにあった ruby-1.3.2-990402 から古い socket を持って来て
再び make したところ、無事 make は通り、make test 及び make install も
成功しました。
が、今度は「~.so」形式のライブラリをロードしようとすると、例えば

---- ここから ----
xterm@rtype:/boot/home/TMP/ruby-1.4.2/sample/>ruby from.rb
/boot/home/config/lib/ruby/1.4/kconv.rb:1:in `require': Failed to load /boot/home/config/lib/ruby/1.4/i586-beos/nkf.so (LoadError)
        from /boot/home/config/lib/ruby/1.4/kconv.rb:1
        from from.rb:4:in `require'
        from from.rb:4
xterm@rtype:/boot/home/TMP/ruby-1.4.2/sample/>ls -l /boot/home/config/lib/ruby/1.4/i586-beos/nkf.so
-r-xr-xr-x   1 baron    users     1433208 Sep 23 01:07 /boot/home/config/lib/ruby/1.4/i586-beos/nkf.so
---- ここまで ----

といった具合に、ファイルが存在するにもかかわらずロードすることができません。
なお、「~.rb」形式のライブラリは大丈夫なようです。

と、大体これまでにやったことの経緯としましては以上のような感じなのですが、
これから先どうすれば良いやら見当が付かなくなってしまいました。
そこで皆様からなんらかのアドバイスをいただけたら、と思って
メールさせて頂いた次第です。なお、情報が不足しているようでしたら、
できる範囲で提示させて頂きたいと思います。

PS:
RAAにある BeOS(Intel) 用の ruby-1.1c6 のバイナリですが、
ファイル形式が R3 までの COFF 形式のものになっているため、
R4 以降の BeOS(Intel - 実行形式はELF) 上では一切動作しません。
間違えてダウンロードしてしまう人も居るかと思われますので、
なんらかの表示をしたほうが良いかと思われます。

--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
原田 典明 (Noriaki Harada)
E-mail: tenmei / maoh.office.ne.jp   NIFTY SERVE: PXN13654
=== === === === === === === === === === === === === === === ===