Re: ld.so finds library, loses library

"James K. Lowden" <[email protected]>
Newsgroups gmane.os.netbsd.help
Message-ID <[email protected]>
Patrick Welche wrote:
> On Wed, May 16, 2007 at 05:06:49PM -0400, James K. Lowden wrote:
> > I have an executable for which the runtime linker fails to find a
> > shared object that ldd admits is there.  I'm hoping someone here can
> > point me in the right direction.  I include the output of ldd,
> > readelf, and the link command line below.  
> > 
> > 	$ uname -rs
> > 	NetBSD 2.0_BETA
> > 	$ .libs/bsqlodbc
> > 	Shared object "libodbcinst.so.1" not found
> > 
> > $ ldd  .libs/bsqlodbc
> > .libs/bsqlodbc:
> >          -lodbcinst.1 => not found
> >          -lc.12 => /usr/lib/libc.so.12
> >          -ltdsodbc.0 => /usr/pkg/lib/libtdsodbc.so.0
> >          -lpthread.0 => /usr/lib/libpthread.so.0
> >          -lodbcinst.1 => /usr/local/lib/libodbcinst.so.1
> >          -lodbc.1 => /usr/local/lib/libodbc.so.1
> 
> How about ldd for libtdsodbc.so.0?
> 
> For me:
> 
> libtdsodbc.so.0.0:
>         -lpthread.0 => /usr/lib/libpthread.so.0
>         -lodbcinst.1 => /usr/local/lib/libodbcinst.so.1
>         -lcrypt.0 => /lib/libcrypt.so.0
>         -lcrypto.3 => /usr/lib/libcrypto.so.3
>         -lssl.4 => /usr/lib/libssl.so.4
> 
> so it could be that one which doesn't have an rpath = /usr/local/lib

I thought I'd solved it, but I hadn't gone far enough, and you're right:
When the ODBC library starts cranking, it can't find what it wants:

$ ldd /usr/pkg/lib/libtdsodbc.so.0
/usr/pkg/lib/libtdsodbc.so.0:
         -lodbcinst.1 => not found
         -lc.12 => /usr/lib/libc.so.12
$ readelf -d /usr/pkg/lib/libtdsodbc.so.0 | sed /RPATH/q

Dynamic segment at offset 0x41c4c contains 20 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library:
[libodbcinst.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.12]
 0x0000000e (SONAME)                     Library soname: [libtdsodbc.so.0]
 0x0000000f (RPATH)                      Library rpath: [/usr/pkg/lib]

So that's it.  Thanks, Patrick!  

--jkl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.