I have an executable vimba
, which uses a shared library libVmbC.so
, which is not installed to the standard location. The copies reside at:
paul@desktop:~/st-cpp/vimba/build$ sudo find / -name "libVmbC.so"
/home/paul/VimbaX_2023-4/api/lib/libVmbC.so
/home/paul/VimbaX_2023-4/bin/libVmbC.so
On a new Ubuntu 23.10 installation, I added it to the LD_LIBRARY_PATH
and everything works fine. On the "old" Ubuntu 22.04 system, this library is not on LD_LIBRARY_PATH
path, which is empty:
paul@desktop:~/st-cpp/vimba/build$ echo $LD_LIBRARY_PATH
nor it's detected by ldconfig
:
paul@desktop:~/st-cpp/vimba/build$ ldconfig -p | grep libVmbC.so
nor it is listed in ld.so.conf
or any of the files included by it. ldd
is able to locate it and vimba
runs fine, though:
paul@desktop:~/st-cpp/vimba/build$ ldd vimba
linux-vdso.so.1 (0x00007ffd179a3000)
libtbb.so.12 => /usr/local/lib/libtbb.so.12 (0x00007f23bb448000)
libVmbC.so => /home/paul/VimbaX_2023-4/api/lib/libVmbC.so (0x00007f23bb000000)
...
How does ldd
know to find it at /home/paul/VimbaX_2023-4/api/lib/libVmbC.so
?
RPATH
orRUNPATH
set in the binary? – muru Mar 18 '24 at 01:40