libruby

gonzuicygwin

$ ./autogen.sh
$ make

するとこんな風に怒られる。

gcc -shared -s -Wl,--enable-auto-import,--export-all -o xmlformatter.so xmlformatter.o -lcrypt 
xmlformatter.o(.text+0xda): In function `xmlformatter_write_obj':
/c/cygwin/home/soutaro/src/gonzui/gonzui/webapp/xmlformatter.c:54: undefined reference to `_rb_obj_as_string'

これはgccのオプションに

-lruby

を足して、importライブラリ「libruby.dll.a」とかをリンクしてやるようにすれば、コンパイルできるようになる。gonzuiの場合だと、acinclude.m4を

  RUBY_LIBS="`ruby -rmkmf -e 'print Config::MAKEFILE_CONFIG["LIBS"], "-lruby\n"'`"

とか書き直して、./autogen.sh && make allすればコンパイルできるようになる。

さて、ここで問題です。

Linuxgonzuiコンパイルすると、やっぱり拡張ライブラリのコンパイルには-lrubyオプションがついていませんが、きちんとコンパイルできます。なんででしょう。

答えは知りません。リンクのタイミングが、WindowsLinuxで違うのかなーとか考えてみたり。