-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Fri, Mar 10, 2017 at 11:58:56AM +0300, Reco wrote: > Hello, list. > > It got my attention today (current jessie, amd64): > > $ LD_PRELOAD=libproxychains.so.3 mutt > > ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD cannot be > preloaded (cannot open shared object file): ignored. > > but, > > $ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libproxychains.so.3 mutt > > <works as intended> > > and > > $ LD_PRELOAD=libproxychains.so.3 ls > > <works as intended> > > So, the question is: what makes mutt so special?
No idea, but ld.so's man page mentions a couple of possibilities right there at the top, under "DESCRIPTION": If a library dependency does not contain a slash, then it is searched for in the following order: o (ELF only) Using the directories specified in the DT_RPATH dynamic section attribute of the binary if present and DT_RUNPATH attribute does not exist. Use of DT_RPATH is deprecated. o Using the environment variable LD_LIBRARY_PATH. Except if the executable is a set-user-ID/set-group-ID binary, in which case it is ignored. o (ELF only) Using the directories specified in the DT_RUNPATH dynamic section attribute of the binary if present. o From the cache file /etc/ld.so.cache, which contains a compiled list of candidate libraries previously found in the augmented library path. If, however, the binary was linked with the -z nodeflib linker option, libraries in the default library paths are skipped. Libraries installed in hardware capability directories (see below) are preferred to other libraries. o In the default path /lib, and then /usr/lib. If the binary was linked with the -z nodeflib linker option, this step is skipped. So plenty for you to investigate :-) (I'd love to do that now, but my customer'd kill me :-( regards - -- t -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAljCctYACgkQBcgs9XrR2kbtjgCePFeO1pDToTWZB38S5utj3xR1 LmsAn0l6pdYef455nWEwPn8Zc+8xNXSo =rEri -----END PGP SIGNATURE-----