Why does adding /usr/lib32 to LD_LIBRARY_PATH break 64-bit binaries?

Dag-Erling Smørgrav des at des.no
Thu Oct 23 18:24:31 PDT 2008


"Alexander Sack" <pisymbol at gmail.com> writes:
> I have some weird behavior I'm trying to figure out and was wondering
> if someone can point me in the right direction.  I'm running a FreeBSD
> 6.1-RELEASE-amd64 machine.  If I add /usr/lib32 to my LD_LIBRARY_PATH
> it breaks all of my binaries on my 64-bit machine.
> [...]
> LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/bin:/usr/lib:/usr/lib32:/usr/lib64

I'm surprised you have /usr/bin in there...

> I would ASSUME that rtld would look at my LD_LIBRARY_PATH and use
> /usr/lib to find libraries, not /usr/lib32.  Why does it insist on
> picking /usr/lib32 when "/bin/ls" is CLEARLY a 64-bit binary?  This
> doesn't make complete sense to me just yet.

If you look at the rtld(1) man page, there are a number of environment
variables you can set to debug the loader.  I'm not sure how helpful
they are, though.

> Someone I'm sure is going "don't do that" and I agree.

Well, yeah, but it should (at the very least) fail in a more graceful
manner.

DES
-- 
Dag-Erling Smørgrav - des at des.no


More information about the freebsd-questions mailing list