48

実行時:

    sudo /sbin/ldconfig

次のエラーが表示されます。

    /sbin/ldconfig: /usr/local/lib/ is not a symbolic link

コマンドを実行するfileと、以下が表示されます。

    file /usr/local/lib/
    /usr/local/lib/: directory

内部/usr/local/lib/には、私が使用する 3 つのライブラリがあります。ここではlib1、 、lib2と呼びますlib3

さて、lddバイナリで を実行すると、次の結果になります。

    lib1.so => not found
    lib2.so => not found
    lib3.so => /usr/local/lib/lib3.so (0x00216000)

しかし、それらはすべて と同じフォルダーにあります/usr/local/lib/{lib1,lib2,lib3}.so

を実行するたびldconfigに、同じエラーが表示されます。

/usr/local/lib/ is not a symbolic link

/usr/local/libで2回宣言する必要があると思いまし/etc/ld.conf.d/*.confたが、そうではありません:

    sudo egrep '\/usr\/local' /etc/ld.so.conf.d/*
    projectA.conf.old:/usr/local/projectA/lib
    local.conf:/usr/local/lib

ld.so.confのみを含む/etc/ld.so.conf.d/*.confため、これ*.oldは処理されず、 を参照し/usr/local/projectA/libます。

lib1 と lib2 をすべて削除しようとしてしばらくすると (ある時点でバイナリのフォルダーでテストしました)、同じエラーが発生します。

4

6 に答える 6

51

Oracle 11R2 クライアントでこの問題に遭遇しました。オラクルのインストーラーがこれを行ったのか、私が到着する前に誰かがここで行ったのかはわかりません. 64 ビット対 32 ビットではなく、すべて 64 ビットでした。

エラーはlibexpat.so.1、シンボリック リンクではありませんでした。

2 つの同一のファイルがlibexpat.so.1.5.2あり、libexpat.so.1. 問題のあるファイルを削除し、それを 1.5.2 バージョンへのシンボリック リンクにすると、エラーが解消されました。

よく知られている名前を現在のバージョンへのシンボリックリンクにしたいのは理にかなっています。これを行うと、古いライブラリになる可能性が低くなります。

于 2013-06-18T19:34:18.497 に答える
7

以下のコマンドを実行しただけです。

export LD_LIBRARY_PATH=/usr/lib/

現在、正常に動作しています。

于 2016-05-26T12:11:01.233 に答える
5

少なくとも質問の時点で解決しました。

質問する前に Web を検索しましたが、決定的な解決策はありませんでした。このエラーの理由は次のとおりです。それ以外の場合、lib3.so は 64 ビット ライブラリです。少なくともそれは私の仮説です。

残念ながらldconfig、ライブラリをロードできなかったことを通知する明確なエラーメッセージは表示されません。ポンプするだけです。

ldconfig: /folder_where_the_wicked_lib_is/ はシンボリック リンクではありません

lddバイナリ上で見つからないライブラリを削除したときに、これを解決しました。これで、どこに問題があるかを簡単に知ることができます。

私の ld バージョン: GNU ld バージョン 2.20.51。最新バージョンの方がユーザーへのメッセージが改善されているかどうかはわかりません。

ありがとう。

于 2012-07-18T14:16:29.973 に答える
2

ライブラリのパスを /etc/ld.so.conf 内に含め、ldconfig を再実行してリストを更新する必要があります。

他の可能性は、環境変数 LD_LIBRARY_PATH にライブラリへのパスを含め、実行可能ファイルを再実行することです。

シンボリック リンクが有効なライブラリを指しているかどうかを確認します ...

/etc/ld.so.conf にパスを直接追加できます。インクルードせずに...

実行ldconfig -pして、ライブラリがキャッシュに適切に含まれているかどうかを確認します。

于 2012-07-18T13:17:01.217 に答える