33

リンカーを実装したり、を使用したりせずlddに、ライブラリへのフルパスを見つけるにはどうすればよいですか? Linux で利用できる標準ライブラリはありますか? (おそらくPOSIX?)

を故意に使用しているファイルで と を使用するとldd、次のようになります。greplibGL.so.1

$ ldd /usr/bin/glxinfo | grep libGL
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f34ff796000)

のようなライブラリ名が与えられた場合libGL.so.1、どうすれば完全なパスを見つけることができます/usr/lib/libGL.so.1か? . できれば、32 ビットと 64 ビットのライブラリを検索するオプションを受け入れます。それを行うライブラリがない場合、これを行うプログラムは存在しますか? のようなものfind-library-path libGL.so.1。コマンドはカウントされlocate libGL.so.1ません。

dlopenそのライブラリからコードを実行する場合、または何かを使用してライブラリを実際にロードしたくありません。

4

5 に答える 5

17

リンクスペースを管理するツールであるldconfigを使用します。

この-pフラグを使用すると、使用可能なすべてのリンク可能なライブラリを参照できます。

于 2012-10-31T11:24:32.767 に答える
2

ライブラリを実際にロードし、非標準だが広く利用可能な関数を使用してもかまわない場合は、dladdrライブラリから任意のシンボルを呼び出すと、ロードされたフル パス名を含む情報が返されます。

于 2012-10-30T22:50:11.907 に答える