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: "Johnny C. Lam" <jlam AT pkgsrc.org>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] ct-lib unit tests link statically
  • Date: Wed, 09 Jul 2008 11:04:11 -0400

James K. Lowden wrote:
ZIGLIO, Frediano, VF-IT wrote:
For me it works even without -static flag, libtool use -rpath
option to specify path. In a previous environment I remember that
autoconf/automake/libtool/whatever produce an executable in .libs
directory and a script in unittests directory to override directory...
are you sure that it does not work so for you ??

Yes, I'm sure. You're right, too, though.
When I configure, I set LDPATH:

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/src/c
tlib/.libs]

It's normal on a NetBSD system to embed the RPATH in every executable, and
not to rely on LD_LIBRARY_PATH. LDFLAGS is the only way I know to do
that.
If we find a way to cause libtool's RPATH to precede the values in
LDFLAGS, we could go back to dynamically linked unit tests.

Freddy's recollection is correct. Libtool should be generating a shell script that properly sets LD_LIBRARY_PATH to reference the uninstalled shared libraries in .libs before executing the built test binaries (also in .libs). Setting LD_LIBRARY_PATH will override any embedded rpath settings in the binaries (on NetBSD, "man ld.elf_so" for more information). If it doesn't, then that usually points to deviating from the "correct" way to use libtool in the Makefiles.

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

Cheers,

-- Johnny C. Lam




Archive powered by MHonArc 2.6.24.

Top of Page