.soが見つかりません。

.soが見つかりません。

ソースからzeromq 3.2.5をインストールしました。

$ wget http://download.zeromq.org/zeromq-3.2.5.tar.gz
$ tar xf zeromq-3.2.5.tar.gz
$ cd zeromq-3.2.5
$ ./configure && make -j4
$ sudo make install

libzmq.so.3次の場所にインストールされます/usr/local/lib

$ sudo updatedb
$ locate libzmq.so.3
/usr/local/lib/libzmq.so.3
/usr/local/lib/libzmq.so.3.0.0

検索パス/usr/local/libにあることを確認しました。ld

$ grep /usr/local/lib /etc/ld.so.conf.d/*
/etc/ld.so.conf.d/libc.conf:/usr/local/lib

ldライブラリが見つかることを確認しました。

$ ldconfig -v 2>/dev/null | egrep -e zmq\|^/
...
/usr/local/lib:
  libzmq.so.3 -> libzmq.so.3.0.0
...

しかし、私のアプリを起動すると見つかりませlddん。libzmq.so.3

$ ldd test_app
  ...
  libzmq.so.3 => not found
  ...

私が設定するとLD_LIBRARY_PATH動作します。

$ export LD_LIBRARY_PATH=/usr/local/lib
$ ldd test_app
  ...
  libzmq.so.3 => /usr/local/lib/libzmq.so.3 (0x00007f22418d9000)
  ...

質問:

  • なぜ標準パスに見つかりませんかldlibzmq.so.3LD_LIBRARY_PATH
  • 設定せずにこの問題を解決するにはどうすればよいですかLD_LIBRARY_PATH

メモ:

RPATH重要な場合に備えてバイナリに設定してください。

$ readelf -a test_app | grep RPATH
 0x000000000000000f (RPATH)              Library rpath: [/home/steve/src/.../bin/gcc-4.9.3/debug]

役に立つかどうかUbuntu 14.04を実行しています。

ベストアンサー1

システムディレクトリに新しいライブラリを追加するときは、次のようにリンカキャッシュをフラッシュする必要があります。

ldconfig

として実行する必要がありますroot

このコマンドがないと、ランタイムリンカーはどのライブラリを使用できるかについての古いアイデアを持っています。

システムリンカーパスに新しいディレクトリを追加することにした場合でも、これを行う必要があります。

設定すると、LD_LIBRARY_PATHランタイムリンカーはキャッシュの外部でこのディレクトリを手動で検索します。

おすすめ記事