起動後に共有ライブラリの名前とアドレスを取得する

最初のができるなら問題無いけど、 dlopen の返り値使えばもっと速かったりとか。

  • LinuxFreeBSD は dlopen の返り値を dh として、 dlinfo(dh, RTLD_DI_LINKMAP, &lmap) 。
  • MacOSX では、うーんよくわからない。 _dyld_* は起動時の状態しか取れないように見える。
  • Win32 では LoadLibrary の返り値を dh として、 GetModuleFileName(dh, buf, 1024) とか。ただロードアドレスが取れない。
  • NetBSD ではたぶんできない。同じく dlctl が実装されれば、って話。

ちなみに、 dlfcn 環境では、関数名を一つでもヒントとして渡せば、 dlsym の返り値を dladdr に渡してやれば問題なくわかる。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h