なかだです。

At Tue, 1 Oct 2002 07:08:41 +0900,
Shirai,Kaoru <shirai / p1jp.com> wrote:
> > そのあとに、t = (void (*)())memchr()というテストをしているはず
> > なんですが。mkmf.logにはその部分はないでしょうか。
> 
>  この部分のことでしょうか。

このあとです。

>   gcc -o conftest -I/package/prog/ruby/lib/ruby/1.6/i686-linux -g -O2  
> -rdynamic  -L/package/prog/ruby/lib
> -L/package/prog/ruby/lib/ruby/1.6/i686-linux conftest.c -lc libruby.a 
> -ldl -lcrypt -lm
>   gcc: libruby.a: No such file or directory
>   conftest.c: In function `t':
>   conftest.c:3: too few arguments to function `memchr'
> 
>  あ、それ以前に何か libruby.a が見付からないとか言ってますね。

二三日前に気づいたのですが、--enable-sharedをつけないと
$(LIBRUBYARG)が$(LIBRUBY_A)になってしまって、カレントディレクト
リにライブラリがある場合(つまりruby自身をリンクするとき)以外は
意味がありません。これは要修正ですが、既に出ちゃってる1.6にはど
うしようもないので、extconf.rbでなんとかしないといけませんね。

> extconf.rb の
> 
>   $libs += " " + CONFIG["LIBRUBYARG"]
> 
> を、
> 
>   $libs += " -lruby"
> 
> にすると memchr()... yes となり、成功しました。

RUBY_INSTALL_NAMEを変えてる場合とか-lが使えない環境とかでまずい
ので、これでどうでしょうか。


Index: extconf.rb =================================================================== RCS file: /cvs/ruby/src/shim/ruby16/ext/stringio/extconf.rb,v retrieving revision 1.6 diff -u -2 -p -r1.6 extconf.rb --- extconf.rb 9 Sep 2002 12:23:52 -0000 1.6 +++ extconf.rb 30 Sep 2002 23:40:09 -0000 @@ -56,6 +56,12 @@ end libs = $libs libpath = $LIBPATH -$libs += " " + CONFIG["LIBRUBYARG"] -$LIBPATH |= [Config::CONFIG["libdir"]] +unless have_func "ruby_init", "ruby.h" + $libs = libs + " " + CONFIG["LIBRUBYARG"] + $LIBPATH = libpath | [Config::CONFIG["libdir"]] + unless have_func "ruby_init", "ruby.h" + $libs = libs + find_library(CONFIG["RUBY_INSTALL_NAME"], "ruby_init") + end +end have_func "rb_io_addstr", "ruby.h" have_func "rb_io_puts", "ruby.h"
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦