On Mon, Apr 15, 2002 at 10:47:34AM -0400, Jeff Trawick wrote:
> For Apache binary distributions, an environment variable (e.g.,
> LD_LIBRARY_PATH) is used at run-time to locate libapr, libaprutil,
> libexpat, etc. because the path etched into the httpd executable is
> the path used when creating the binary distribution, not the path used
> for the actual install.
> 
> But there is a problem with this: LD_LIBRARY_PATH is always searched
> after the etched-in path.  Also, the etched-in path is searched before
> the system path.

According to ld.so.1(1) on Solaris 8/SPARC:
     The runtime linker uses a prescribed search path for  locat-
     ing  the  dynamic  dependencies  of  an  object. The default
     search paths are the runpath recorded in  the  object,  fol-
     lowed  by /usr/lib for 32-bit objects or /usr/lib/64 for 64-
     bit objects. This latter component can be modified  using  a
     configuration  file  created  with  crle(1).  The runpath is
     specified when the dynamic object is constructed  using  the
     -R  option to ld(1). LD_LIBRARY_PATH can be used to indicate
     directories to be searched before the default directories.

Therefore, LD_LIBRARY_PATH is searched *before* the etched-in path. Is
there any platform where this is not the case?

> I think we'd be better off if there were no path etched into httpd for
> a binary distribution.  (This could be useful for more than just the
> binbuild.sh scenario.)  Unfortunately, it isn't clear how to do this
> with libtool.  When apr.la is created -rpath is required.  It then
> goes into apr.la and I think that is what results in the etched-in
> path for httpd.
> 
> Any ideas on how to deal with this issue?
> 
> It would be nicer to just replace the etched-in value at install
> time.  I don't think that libtool can do that unless you do a re-link
> on the target machine.  We could binary-edit the path within the
> executable but that doesn't sound very maintainable.

The correct solution is re-linking on the target. Libtool does this by
default when installing the binary.

BTW, are you talking about pre-compiled binaries provided by
apache.org or pre-compiled binaries available in RPM/DEB/etc format?
If the latter, I disagree with the solution of a NULL run-time search
path in the binary.

-- 
albert chin ([EMAIL PROTECTED])

Reply via email to