>From: WATANABE Hirofumi <eban / os.rim.or.jp>
>Subject: [ruby-ext:02096] Re: import library for extensions

> Takaaki Tateishi <ttate / kt.jaist.ac.jp> writes:
> 
> :たとえば,拡張ライブラリ A.so, B.so があるとします.このとき,B.so
> :はA.soのAPIを使っているとします.僕はcygwin,mingwのことしか分からな
> :いのですが,dlltoolでdefファイルをもとにA.soのインポートライブラリ
> :A.libを作ってから,B.soを作るときにA.libをリンクする必要があると思
> :っています.
> 
> VC++だと基本的にはそうなると思います。
> 
> cygwinとmingwに関しては、--export-all-symbolsかdefファイルで
> 必要なシンボルをexportしてA.soを作っておけば、インポートライ
> ブラリを作らなくてもGNU LDは直接A.soをリンクできます。結局の
> ところ上記undefinedになるOSと同じようことですが。
> #でも流石に.soはまずそう。

CygwinでNArrayを他の拡張ライブラリからリンクするとき、
defファイルだけではうまくいかなかったので、extconf.rb に

if RUBY_PLATFORM =~ /cygwin|mingw/
  CONFIG["DLDFLAGS"] << " --output-lib libnarray.a"
end

と書いてインポートライブラリ?を作るようにしましたが、
他にもっと良い方法があるんでしょうか。

田中昌宏