dlopen()
で開かれたライブラリへのパスを判断するための移植性のある(POSIX)方法を探しています。 dl_iterate_phdr()
やdladdr()
のような機能は移植できません。dlopenで開かれた動的ライブラリへのパスを決定するポータブルな方法
一部man
ページの詳細開くためのライブラリを検索するdlopen()
で撮影したパス(ld.so.cache
、LD_LIBRARY_PATH
、/ libには/ usr/libに、...)ので、これらのディレクトリのすべてのをチェックすることはできますが、ことができませんでしたポータブル。たとえば、Linuxでは、ld.so.cache
を解析する方法が必要ですが、Mac OS Xではそのような概念はありません。
一般的なケースではdlopen
を使用していないため、私がこれをやりたい理由については、previous questionを参照してください。
は聞こえるが、一つは、絶対パスが正しいことを確認する必要があります'dlopen'は検索パスを別の方法で開始するからです。私が達成したいことについての明確な詳細については、http://stackoverflow.com/questions/9038303/programatically-determine-shared-libraries-in-use-by-running-applicationをご覧ください。 – greg
OK、 'LD_LIBRARY_PATH'はあなたが行っていることに対して正しいアプローチではありません。代わりに、生徒の共有ライブラリファイルの絶対パス名をプログラムに渡すだけで、完全パス名でロードすることができます。 –
@greg:指定された名前に "/"文字が含まれていない場合、dlopenはライブラリパスのみを検索します。 "/"が含まれていれば、ファイルパスとして扱われ(直接オープンに渡されます)、そのファイルが終了しなければ他の場所は見えません。 –