.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)
  ...

질문:

  • 왜 표준 경로에서 찾을 수 없습니까 ld?libzmq.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런타임 링커가 캐시 외부에서 이 디렉터리를 수동으로 찾게 됩니다.

관련 정보