web-dev-qa-db-ja.com

/ usr / local / libの共有ライブラリを使用する

ソースからいくつかのライブラリをビルドしました。make installの後のファイルは/usr/local/libにあります

たとえば、私の場合、このディレクトリにlibodb-2.2.soというファイルがあります。

しかし、libodbにリンクされている実行可能ファイルを起動すると、共有ライブラリの読み込み中にエラーが発生しました:libodb-2.2.so: cannont open shared object file: No such file or directory.

実行ファイルを正しくビルドしていないということですか?または、/usr/local/libフォルダーにもいくつかの興味深いライブラリがある可能性があることをシステムに示す必要がありますか?

私はUbuntu 12.04、Linuxカーネル3.2.0-38-genericを使用しています。

60

現在のセッションでは、次のことができます

エクスポートLD_LIBRARY_PATH =/lib:/ usr/lib:/ usr/local/lib 

または、変更を永続的にするには、/usr/local/lib/etc/ld.so.conf(またはそれに含まれるもの)として、ルートとしてldconfigを実行します。

それでも問題が解決しない場合は、ldd [executable name]は、検索しようとしているライブラリと、見つからないライブラリを示します。

60
Flup

ライブラリのビルド後にldconfigをすでに実行している場合は、読み続けてください。そうでない場合は、まず ldconfigから読み取る を使用します。

/usr/local/libがldconfigが使用するライブラリパスにない可能性があります。あなたはこれを行うことができます:

ldconfig /usr/local/lib

そして、それらはリンカのキャッシュに追加する必要がありますが、パスを適切に追加することをお勧めします。 /etc/ld.so.conf.dディレクトリ。その場合は、ファイル(「usr-local.conf」など)を追加して、1行追加します。

/usr/local/lib

次にldconfigを実行します。 ld.so.conf.dディレクトリがない場合は、/etc/ld.so.conffileそして、その行をその最後に追加できます。

42
goldilocks