4

UbuntuにSPIKEfile(fuzzer)をインストールしたところ、次のように表示されます。

次に、LD_LIBRARY_PATHを設定して、libdisasm.soへのパスとlibdlrpc.soへのパスを含める必要があります。

'printenv'は、そのような変数が存在しないことを示します。

誰かがこれが実際に何を意味するのか、そして問題を解決する方法を初心者の言葉で親切に私に説明してもらえますか?私はかなり経験の浅いLinuxユーザーです。前もって感謝します。

PSネット上のほとんどのものは役に立たないことがわかったので、自分が何をしているのかを知らずにコピーして貼り付けたくありません。

4

2 に答える 2

4

Linuxには、共有ライブラリの概念があります。つまり、実行可能ファイルに組み込まれず、プログラムの実行時に動的にリンクされるコードのライブラリです。実行可能ファイルには、必要なライブラリの名前への参照が含まれているだけです。

LD_LIBRARY_PATHは、これらのライブラリを見つけるときにLinuxロードタイムリンカが​​使用する必要のある追加のパスを一覧表示する環境変数です。これは、フォームのコロンで区切られたリストです。

/path/to/somewhere:/path/to/somewhere_else:/path/to/narnia

Bashを使用していると仮定すると、次の手順を実行して、リストに追加のパスを追加できます(これ$LD_LIBRARY_PATHは、最初は空であるか、設定されていない場合でも機能します)。

export LD_LIBRARY_PATH=/path/to/dir/containing/libdisasm.so:$LD_LIBRARY_PATH

(そしてlibdlrpc.soについても同様です)。

于 2012-07-15T14:31:22.407 に答える
1

SolarisでLD_LIBRARY_PATHを使用したのは、スクリプトをキックするときに一部のライブラリが欠落しているように見えるためです。スクリプトの先頭でこの変数を設定することは、それを解決するためのより安全な方法です。

言及する価値のあるもの(おそらくあなたが探しているもの):

ldd /path/to/narnia

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/dir/containing/lib

(以前に設定したディレクトリを失わないように、この方法で実行してください)

コマンドを再度使用するときに機能する必要があります:

ldd /path/to/narnia
    librt.so.1 => /lib/librt.so.1 (0x00002b4eca08e000)
    libc.so.6 => /lib/libc.so.6 (0x00002b4eca49f000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00002b4eca7df000)
    /lib64/ld-linux-x86-64.so.2 (0x00002b4ec9e72000)
    libmylib.so.1 => ~/myprogdir/lib/libmylib.so.1 (0x00002b4eca9fa000)

それでもlibが見つからない場合は、エラーがスローされます。必ずユーザープロファイルに設定を追加してください。

# vi .bash_profile
于 2012-07-15T17:27:18.823 に答える