This is the mail archive of the
libc-help@sourceware.org
mailing list for the glibc project.
Re: LD_PRELOAD in a multilib environment
On Wed, Mar 2, 2011 at 7:43 PM, Adam Kellas <adam.kellas@gmail.com> wrote:
> Solaris solved this many years ago by adding alternate variables
> LD_PRELOAD_32 and LD_PRELOAD_64; as long as you point LD_PRELOAD_32 to
> the 32-bit version of libfoo and LD_PRELOAD_64 to the 64-bit version,
> things continue to work. I'm surprised to see that this system, or a
> different solution, has not been brought into the Linux world. What am
> I missing? How do people solve this in Linux?
For the archives, the answer turns out to be what Ulrich Drepper calls
a "dynamic string token", or DST, called $LIB. I.e. if you set
export LD_PRELOAD=.../$LIB/libfoo.so
then the runtime linker will set $LIB to "/lib" when running a 32-bit
binary and to "/lib64" when running a 64-bit program. Works more or
less the same as on Solaris, arguably a bit more elegant. Documented
in http://www.akkadia.org/drepper/dsohowto.pdf.
AK