起動後に共有ライブラリの名前とアドレスを取得する
最初のができるなら問題無いけど、 dlopen の返り値使えばもっと速かったりとか。
- Linux と FreeBSD は dlopen の返り値を dh として、 dlinfo(dh, RTLD_DI_LINKMAP, &lmap) 。
- MacOSX では、うーんよくわからない。 _dyld_* は起動時の状態しか取れないように見える。
- Win32 では LoadLibrary の返り値を dh として、 GetModuleFileName(dh, buf, 1024) とか。ただロードアドレスが取れない。
- NetBSD ではたぶんできない。同じく dlctl が実装されれば、って話。
ちなみに、 dlfcn 環境では、関数名を一つでもヒントとして渡せば、 dlsym の返り値を dladdr に渡してやれば問題なくわかる。