Unix Programming - Re: 'Path for the shared libraries which I do not have direct dependency'

This is Interesting: Free IT Magazines  
Home > Archive > Unix Programming > March 2004 > Re: 'Path for the shared libraries which I do not have direct dependency'





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Re: 'Path for the shared libraries which I do not have direct dependency'
Chuck Dillon

2004-03-24, 10:39 am

qazmlp wrote:
> I have a shared library libFirst.so
> I have a shared library libSecond.so which has dependency libFirst.so.
> Hence, while producing the libSecond.so, I have to add the path to
> libFirst.so
> in the LD_LIBRARY_PATH
>
> I have a shared library libThird.so which has dependency only on
> libSecond.so.
> So, I mentioned the path to only libSecond.so in the LD_LIBRARY_PATH
> while producing
> libThird.so.
> But, the linker reports error pointing at the symbols in libFirst.so
> After adding the path to libFirst.so also in the LD_LIBRARY_PATH, the
> error disappears.
>
> I am wondering why such a requirement of adding the path of some other
> shared libraries also is required when my library libThird.so does not
> have a direct dependency on them.
>
> Kindly clarify!


The default linker behavior when linking a program or .so is to fully
resolve all symbols including the dependencies in .so's indirectly
referenced.

Don't rely on LD_LIBRARY_PATH to resolve link time references. Specify
the library locations on the compiler (or linker) command line (e.g.
-L<path to non-system-standard-libraries> ).

-- ced


--
Chuck Dillon
Senior Software Engineer
NimbleGen Systems Inc.
Chuck Dillon

2004-03-25, 9:51 am

qazmlp wrote:
> Chuck Dillon <cdillon@nimblegen.com> wrote in message news:<c3s731$1tc$1@grandcanyon.binc.net>...
>
>
> If default behaviour is so, is it possible to change such that, we do
> not to give the path for indirect dependencies?
>


(Solaris specific info...)
I was incorrect in saying the default behavior for linking shared
objects is to choke on unresolved symbols. The default behavior of ld
is to allow them. The -z defs switch of ld (see man ld) forces
resolution of all symbols.

I suggest you reference the man pages for your compiler, ld and look at
the "libraries and linkers guide" at docs.sun.com.

-- ced

--
Chuck Dillon
Senior Software Engineer
NimbleGen Systems Inc.
Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com