libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to run ldd on non-installed .so ?


From: John Reiser
Subject: Re: how to run ldd on non-installed .so ?
Date: Mon, 02 Jul 2001 08:35:57 -0700

"Gary V. Vaughan" wrote:
> 
> On Wednesday 13 June 2001  9:24 pm, John Reiser wrote:
> > ltmain.sh (GNU libtool) 1.4 (1.920 2001/04/24 23:26:18)
> >
> > How should I run ldd on a built, but non-installed, .so library?
> > What I'm looking for is automatic setting of LD_LIBRARY_PATH
> > before invoking ldd.  I want the ldd output for its identification
> > of .soname and some path to each DT_NEEDED module, and the
> > absolute address at which each library is loaded.
> >
> > "libtool --mode=execute ldd .libs/foo.so" eventually tries to
> >       eval 'exec $cmd "/"'
> >       exec ldd /
> > because both $progdir and $program are empty strings.
> >
> > A similar fate awaits both
> >       libtool --mode=execute ldd .libs/foo.la
> > and
> >       libtool --mode=execute -dlopen .libs/foo.la ldd .libs/foo.so
> >
> > Hints?
> 
> In the first instance Peter is correct in that you shouldn't be trying to use
> libtool in this way for the purpose you describe, unless you don't care about
> portability.
> 
> However, for the archives, libtool always operates on libtool libraries, so
> you should be using:
> 
>   $top_builddir/libtool --mode=execute ldd foo.la
> 
> $top_builddir is important, because theoretically you might have problems if
> the installed libtool is a very different version to the package version that
> built the .la file.

When I run
        $top_builddir/libtool --mode=execute ldd libfoo.la
with "set -x" then eventually I see
        + . ./libfoo.la   # execute all assignments in .la file
           ...
        + eval 'exec $cmd "/"'
        ++ exec ldd /
        ldd: /: No such file or directory
because the .la file contains no assignment to 'progdir' or 'program'.
Also, libtool has not processed the dependent libraries that libfoo
requires, and has not set LD_LIBRARY_PATH.
It looks like I need --mode=link to get that processing.
libtool's philosophy "a library is a program" has not been implemented here.

When I run [using kdelibs-2.1.2/libtool, which looks configured reasonably]
        $top_builddir/libtool --mode=link ldd libfoo.la
with "set -x" then eventually I see
        + grep '^### BEGIN LIBTOOL TAG CONFIG: CXX$'
           ...
        + echo 'libtool: link: unable to infer tagged configuration'
        + echo 'libtool: link: specify a tag with `--tag'\'''
        + exit 1
And --mode=link has not processed the dependent libraries, nor set
LD_LIBRARY_PATH.

How can I get libtool to process the dependent libraries and set
LD_LIBRARY_PATH so that ldd gives the right answer, even when
the .la is not installed?
It looks to me as if 'ldd' is a case that libtool does not implement.

-- 
John Reiser, address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]