Hello!

2009/12/3 Peter Beckman <beck...@angryox.com>:
> On Thu, 3 Dec 2009, Dmitry Pryanishnikov wrote:
>
>>  Well, ldd's output _itself_ depends on the current environment and
>> thus can't insure that correct libraries will be used by the
>> application. Compare:
>
>  Well that's just confusing!  So what's the default?  If I have no
>  LD_LIBRARY_PATH set, lighttpd uses /usr/local/lib as I would
>  expect/hope/desire, but I have no understanding as to why.  If I set
>  LD_LIBRARY_PATH to /usr/lib, it uses everything right EXCEPT
>  /usr/lib/libssl.so.6.  What's the logic?  How does one do it right?

  I haven't found definitive answer using RTFM. But luckily it's
opensource, so RTFS gives the following search order for rtld-elf (as
of RELENG_7):

/usr/src/libexec/rtld-elf/rtld.c:

/*
 * Find the library with the given name, and return its full pathname.
 * The returned string is dynamically allocated.  Generates an error
 * message and returns NULL if the library cannot be found.
 *
 * If the second argument is non-NULL, then it refers to an already-
 * loaded shared object, whose library search path will be searched.
 *
 * The search order is:
 *   LD_LIBRARY_PATH
 *   rpath in the referencing file
 *   ldconfig hints
 *   /lib:/usr/lib
 */


>
> web1: 4 : ~/logs/web3 --> unsetenv LD_LIBRARY_PATH
> web1: 4 : ~/logs/web3 --> ldd /usr/local/sbin/lighttpd
> /usr/local/sbin/lighttpd:
>        libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x80066e000)
>        libssl.so.6 => /usr/local/lib/libssl.so.6 (0x80079e000)
>        libcrypto.so.6 => /usr/local/lib/libcrypto.so.6 (0x8008eb000)
>        libc.so.7 => /lib/libc.so.7 (0x800b63000)
>        libz.so.5 => /lib/libz.so.5 (0x800d9d000)
>        libthr.so.3 => /lib/libthr.so.3 (0x800eb2000)
> web1: 4 : ~/logs/web3 --> setenv LD_LIBRARY_PATH /usr/lib
> web1: 4 : ~/logs/web3 --> ldd /usr/local/sbin/lighttpd
> /usr/local/sbin/lighttpd:
>        libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x80066e000)
>        libssl.so.6 => /usr/lib/libssl.so.6 (0x80079e000)

 Looks like 'libssl.so.6 => /usr/local/lib/libssl.so.6' is set via
rpath - it overrides standard hints path
'/lib:/usr/lib:/usr/lib/compat:/usr/local/lib...' but still can be
overridden by LD_LIBRARY_PATH.

-- 
Sincerely, Dmitry
nic-hdl: LYNX-RIPE
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to