On Jun 21, 2010, at 12:54 PM, Jirka Hladky wrote:

> However, libtool does not look into /usr/lib64 by default. I have found 2 ways
> how to fix it:

Are we installing to /usr/lib64 by default?  Or do you have something in your 
specfile or your system's default that is resetting libdir to /usr/lib64?

FWIW, in the 1.0.2 distribution tarball, I'm not seeing the -rpath argument in 
the final libtool link.  I see it in the almost-final link:

/bin/sh ../libtool  --tag=CC   --mode=link gcc -std=gnu99   -fvisibility=hidden 
-I/usr/include/libxml2   -std=gnu99   -fvisibility=hidden  
-I/home/jsquyres/hwloc-1.0.1/include    -no-undefined  -version-number 0:1:0 
-lxml2 -lz -lm    -o libhwloc.la -rpath /usr/local/lib topology.lo traversal.lo 
topology-synthetic.lo bind.lo cpuset.lo misc.lo topology-xml.lo  
topology-linux.lo       topology-x86.lo  

But then libtool seems to strip it out:

libtool: link: gcc -shared  .libs/topology.o .libs/traversal.o 
.libs/topology-synthetic.o .libs/bind.o .libs/cpuset.o .libs/misc.o 
.libs/topology-xml.o .libs/topology-linux.o .libs/topology-x86.o   -lxml2 -lz 
-lm    -Wl,-soname -Wl,libhwloc.so.0 -o .libs/libhwloc.so.0.1.0

Are you seeing something different?

How does one check to see if rpath was applied to the final 
.libs/libhwloc.so.0.1.0?  I tried objdump and didn't see anything, but I might 
be looking in the wrong place:

$ objdump .libs/libhwloc.so.0.1.0 -x | grep -i path
000000000000de27 l     F .text  000000000000019d              
hwloc_strdup_mntpath
$

> 1) Add  /usr/lib64 into /etc/ld.so.conf. It works like a charm. The problem is
> that I cannot use this change in the build environment (on a cluster of build
> servers for compilation on different architectures)
> 
> Samuel, do you have "/usr/lib64" directory listed in /etc/ld.so.conf listed on
> your 64-bit Debian? If so, I will consider to open Bugzilla to add
> "/usr/lib64" directory into /etc/ld.so.conf on Fedora as well.

FWIW, it's not in my RHEL 5.4:

[11:32] svbu-mpi:~/svn/ompi/ompi/mpi/c % more /etc/ld.so.conf
include ld.so.conf.d/*.conf
[11:32] svbu-mpi:~/svn/ompi/ompi/mpi/c % more /etc/ld.so.conf.d/*
/usr/lib64/qt-3.3/lib
[11:32] svbu-mpi:~/svn/ompi/ompi/mpi/c % 

> 2) Second approach is to add
> sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' 
> libtool
> sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
> into the %configure stage in rpm specs.
> 
> I don't like this approach but it seems to be the only way how to get rid of
> rpath on an automatic build system.

This is definitely not a preferred solution; I don't want to get in the 
business of frobbing a generated libtool script (we do it in Open MPI to work 
around esoteric bugs and it's awful awful awful).

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to