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

/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を使用しています。

答え1

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

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

または、変更を永続的に適用するには/usr/local/lib/etc/ld.so.confまたは含まれている内容)を追加してldconfigrootとして実行できます。

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

答え2

ldconfigすでにライブラリを構築して実行している場合は、読み続けてください。そうでなければ、ldconfigについて読んでください。最初。

/usr/local/libldconfig が使用するライブラリパスにない可能性があります。次のことができます。

ldconfig /usr/local/lib

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

/usr/local/lib

今実行してくださいldconfig。 ld.so.conf.d ディレクトリがない場合は、1 つある必要があります。/etc/ld.so.conf 文書この行を最後に追加できます。

関連情報