lddがパスを見つけることができません。パスを追加する方法

lddがパスを見つけることができません。パスを追加する方法

私はこの問題がそれほど新しいものではないことを知っていますが、私の問題を自分で解決することはできないようです。

ldd次の出力を生成します

u123@PC-Ubuntu:~$ ldd /home/u123/Programme/TestPr/Debug/TestPr
    linux-vdso.so.1 =>  (0x00007ffcb6d99000)
    libcsfml-window.so.2.2 => not found
    libcsfml-graphics.so.2.2 => not found
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcebb2ed000)
    /lib64/ld-linux-x86-64.so.2 (0x0000560c48984000)

ld正しいパスを知らせる正しい方法は何ですか?

答え1

ライブラリが標準パスにない場合は、パスに追加するか、LD_LIBRARY_PATHに非標準パスを追加する必要があります。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>

上記のいずれかの操作を完了したら、次のコマンドを実行して動的リンカーランタイムバインディングを更新する必要があります。

sudo ldconfig

修正する:

スタートアップファイルの1つ(〜/ .bashrcなど)に上記の行を作成して、export変更を永続的に適用できます。またはデフォルトライブラリが他のライブラリと競合しない場合は、標準ライブラリパス(例:/lib、/usr/lib)のいずれかを入力してください。

答え2

LD_LIBRARY_PATH短期テストにはいいけど一つしかないから変える、カスタムライブラリを持つ複数のアプリケーションがある場合、使用するのは厄介です。

Debian/Ubuntu の一般的なアプローチは、ローダの設定にそれを追加することです。

/etc/ld.so.conf.d

ローダーが検索するディレクトリが含まれています。たとえば、次のようになります。

/usr/local/libcsfml

追加資料:

答え3

問題のバイナリはあなたがコンパイルしたようです。

したがって、いくつかのライブラリが見つからない問題はあなたの責任です。

システムでこれらのライブラリが利用可能な場合は、非標準ディレクトリの場所にあるように見えます。

ライブラリが存在する場所を-R directoryリンカに通知するために、最終コンパイラ呼び出しに使用されます。directory複数の-R directoryオプションが可能です。

を使用する場合は、代わりにgcc使用する必要があります。-Wl,-R-R

関連情報