소스에서 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.3
LD_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
런타임 링커가 캐시 외부에서 이 디렉터리를 수동으로 찾게 됩니다.