Macで共有ライブラリをdynamic loading
Cygwinで共有ライブラリ(*.dll)のDynamic loadingができないのは,なんとなくしかたなさそうに見えるものの,Intel Macでできないのはなんとなく納得がいかないので,ちょっと見てみた.
エラーメッセージdynamic loading not supported on this platformを手掛かりにソースを見てみると,biterun/unix.cあたりでプラットフォームに応じた共有ライブラリのロードを行なっているらしいことがわかる.よく読んでみるとMacOSのAPINSLinkModuleなんてのも使われてて,あからさまにMacOSのサポートはされているみたい.きっとppc macのサポートだけして,intel macのサポートを忘れたに違いない(そんなわけない).
configureを見ると,
powerpc-apple-darwin*) mksharedlib="cc -bundle -flat_namespace -undefined suppress -o" bytecccompopts="$dl_defs $bytecccompopts" #sharedcccompopts="-fnocommon" dl_needs_underscore=true shared_libraries_supported=true;;
みたいな場所があったので,
i[3456]86-apple-darwin*) mksharedlib="cc -bundle -flat_namespace -undefined suppress -o" bytecccompopts="$dl_defs $bytecccompopts" #sharedcccompopts="-fnocommon" dl_needs_underscore=true shared_libraries_supported=true;;
とか付け足して,./configureからやりなおし.とりあえず共有ライブラリもちゃんとロードできるようになった.
./configureを読むかぎりでは,Intel macも考慮に入っているみたいなので,多分Dynamic loadingを有効にするとうまくいかないことがあるんだろう.とりあえず,わからないからそのまま使ってみるけど,こえーなぁ.