[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: LD_LIBRARY_PATH for make test



Hallvard B Furuseth wrote:
Michael Ströder writes:
So this works great for you. But this won't work for others. And I'd
really like to know what's wrong with my suggestion to generally set
LD_LIBRARY_PATH in tests/scripts/defines.sh like this:

Setting LD_LIBRARY_PATH in defines.sh was always lame at best. In particular, it does nothing for systems like HPUX or AIX (which use SHLIB_PATH and LIBPATH, respectively) and I imagine there are many other systems in the same boat. Part of the point in using libtool is to avoid having to muck with this kind of stuff directly in our own scripts.


Does that help?  man ld.so on RHEL 5.3 says $LD_LIBRARY_PATH is used
_after_ an Elf binary's DT_RPATH attribute, unless the DT_RUNPATH
attribute is also set.  ld does not set DT_RUNPATH by default.

But libtool does by default - look at the DYNAMIC section of lt-slapd:

mandolin:~/OD/hobj/servers/slapd/.libs> readelf -d lt-slapd

Dynamic section at offset 0x125d80 contains 33 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libldap_r-2-devel.so.0]
0x0000000000000001 (NEEDED) Shared library: [liblber-2-devel.so.0]
0x0000000000000001 (NEEDED) Shared library: [libdb-4.7.so]
0x0000000000000001 (NEEDED) Shared library: [libsasl2.so.2]
0x0000000000000001 (NEEDED) Shared library: [libgssapi.so.2]
0x0000000000000001 (NEEDED) Shared library: [libssl.so.0.9.8]
0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.0.9.8]
0x0000000000000001 (NEEDED) Shared library: [libresolv.so.2]
0x0000000000000001 (NEEDED) Shared library: [libltdl.so.3]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000f (RPATH) Library rpath: [/home/hyc/OD/hobj/libraries/libldap_r/.libs:/home/hyc/OD/hobj/libraries/liblber/.libs]
0x000000000000001d (RUNPATH) Library runpath: [/home/hyc/OD/hobj/libraries/libldap_r/.libs:/home/hyc/OD/hobj/libraries/liblber/.libs]
0x000000000000000c (INIT) 0x4159d0
0x000000000000000d (FINI) 0x4c5694
0x0000000000000004 (HASH) 0x4002c8
0x0000000000000005 (STRTAB) 0x40c0b8
0x0000000000000006 (SYMTAB) 0x402bc0
0x000000000000000a (STRSZ) 26669 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000015 (DEBUG) 0x0
0x0000000000000003 (PLTGOT) 0x725fe8
0x0000000000000002 (PLTRELSZ) 8856 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x413738
0x0000000000000007 (RELA) 0x4135d0
0x0000000000000008 (RELASZ) 360 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffe (VERNEED) 0x413550
0x000000006fffffff (VERNEEDNUM) 2
0x000000006ffffff0 (VERSYM) 0x4128e6
0x0000000000000000 (NULL) 0x0


That's on a build with no special linker flags configured.

With all default settings, I've never run into any library mismatch problems. We already know about Hallvard's setup; I don't believe there's anything we can or should do to accommodate nonstandard linker settings. When you change the linker flags, you should know what you're doing.

--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/