Skip to Content.
Sympa Menu

freetds - Re: [freetds] ct-lib unit tests link statically

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <jklowden AT freetds.org>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] ct-lib unit tests link statically
  • Date: Wed, 9 Jul 2008 13:48:56 -0400

Johnny C. Lam wrote:
> > When I configure, I set LDPATH:
^^^^^^ I meant LDFLAGS
> >
> > LD_search='-L/usr/local/lib -L/usr/pkg/lib'
> > LD_rpath='-Wl,--rpath -Wl,/usr/local/lib:/usr/pkg/lib'
> > export LDFLAGS="${LD_search} ${LD_rpath}"
> >
> > And that rpath precedes the "local" one in the unit test binaries.
> >
> > $ ldd datafmt
> > datafmt:
> > -lpthread.0 => /usr/lib/libpthread.so.0
> > -lct.4 => /usr/local/lib/libct.so.4
> > -lc.12 => /usr/lib/libc.so.12
> >
> > $ readelf -d datafmt | grep -i rpath
> > 0x0000000f (RPATH) Library rpath:
> > [/usr/local/lib:/usr/pkg/lib:/usr/users/home/jklowden/freetds/build/s
> > rc/c tlib/.libs]

> Setting LD_LIBRARY_PATH will override any embedded rpath

Huh, so it does!

OT: Now I *really* don't know why NetBSD doesn't ship by default with a
ld.so.conf that includes /usr/local/lib and /usr/pkg/lib. I had been
given to understand that relying on RPATH was more secure than using
LD_LIBRARY_PATH but, because the environment variable overrides, any user
can cause any shared object to be used.

I think maybe I should simplify my life by adding usr/local/lib and
/usr/pkg/lib to /etc/ld.so.conf.

> How are you verifying that the wrong shared libraries are being used?

See above. datafmt is a ct-lib unit test. readelf(1) shows the embedded
RPATH. The first part -- /usr/local/lib:/usr/pkg/lib -- comes directly
from LDFLAGS. ldd(1) shows datafmt is dynmically linked to
/usr/local/lib/libct.so.4.

--jkl




Archive powered by MHonArc 2.6.24.

Top of Page