Обсуждение: Shared library search paths

Поиск
Список
Период
Сортировка

Shared library search paths

От
Peter Eisentraut
Дата:
Some platforms (OSF/cc, HPUX) are already using -rpath or equivalent, so
you don't have to specify a shared library search path at runtime. I think
that a lot more platforms could use this. Can people comment on whether
and how it works on their platform? Essentially,

LDFLAGS+=-rpath '$(libdir)'

might do the trick for most.


--
Peter Eisentraut                  Sernanders väg 10:115
peter_e@gmx.net                   75262 Uppsala
http://yi.org/peter-e/            Sweden


Re: Shared library search paths

От
Mark Dalphin
Дата:
For the SGI Irix 6.5, "man ld" gives:

     ....

     -rpath library_path
               Adds the library_path to the search path for DSOs.  Each
               library path is appended to the list of directories at the
               time the executable or DSO is loaded.  This option directs
               rld(5) to look in the named directories, but to look only
               for DSOs, and to stop looking when the correct one is found.

               This option can be specified only when the -shared or
               -call_shared options are also in effect.  For more
               information, see the rld(5) man page.  (C, C++, F77, F90)

    ....

     -shared   Produces a DSO, creates all of the tables for run-time
               linking, and resolves references to other specified shared
               objects.  The object created can be used by the linker to
               make dynamic executables.  (C, C++, F77, F90)

    ....

Hope this helps.
Mark

Peter Eisentraut wrote:

> Some platforms (OSF/cc, HPUX) are already using -rpath or equivalent, so
> you don't have to specify a shared library search path at runtime. I think
> that a lot more platforms could use this. Can people comment on whether
> and how it works on their platform? Essentially,
>
> LDFLAGS+=-rpath '$(libdir)'
>
> might do the trick for most.
>
> --
> Peter Eisentraut                  Sernanders väg 10:115
> peter_e@gmx.net                   75262 Uppsala
> http://yi.org/peter-e/            Sweden

--
Mark Dalphin                          email: mdalphin@amgen.com
Mail Stop: 29-2-A                     phone: +1-805-447-4951 (work)
One Amgen Center Drive                       +1-805-375-0680 (home)
Thousand Oaks, CA 91320                 fax: +1-805-499-9955 (work)




Re: [HACKERS] Shared library search paths

От
"Oliver Elphick"
Дата:
Peter Eisentraut wrote:
  >Some platforms (OSF/cc, HPUX) are already using -rpath or equivalent, so
  >you don't have to specify a shared library search path at runtime. I think
  >that a lot more platforms could use this. Can people comment on whether
  >and how it works on their platform? Essentially,
  >
  >LDFLAGS+=-rpath '$(libdir)'
  >
  >might do the trick for most.

As far as Debian is concerned, use of rpath is a bug.  Here's a quote from
some Debian system documentation:

  libtool automatically inserts `-rpath' settings when compiling your
  program. But `-rpath' can cause big problems if the referenced
  libraries get updated. Therefore, no Debian package should use the
  `-rpath' option.

  libtool also refuses to link shared libraries against other shared
  libraries.  Debian packages have to at least link against libc (with
  "-lc"), so that the dynamic linker knows whether to use the
  libc5-compat libraries or not.

--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver
PGP: 1024R/32B8FAA1: 97 EA 1D 47 72 3F 28 47  6B 7E 39 CC 56 E4 C1 47
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "For God so loved the world, that he gave his only
      begotten Son, that whosoever believeth in him should
      not perish, but have everlasting life."     John 3:16



Re: Shared library search paths

От
Thomas Lockhart
Дата:
> Some platforms (OSF/cc, HPUX) are already using -rpath or equivalent, so
> you don't have to specify a shared library search path at runtime. I think
> that a lot more platforms could use this. Can people comment on whether
> and how it works on their platform? Essentially,
> LDFLAGS+=-rpath '$(libdir)'

For linux (at least gcc 2.7.x and 2.95.2 systems):

if specified in the compilation step,

  -Wl,-rpath $(libdir)

or if specified directly to the linker

  -rpath $(libdir)

                     - Thomas

Re: Shared library search paths

От
The Hermit Hacker
Дата:
for all the stuff I'm doign lately, I just do:

setenv LDFLAGS "-R/usr/local/pgsql/lib -R/usr/local/lib"

and let configure handle the rest ...


On Tue, 18 Jul 2000, Mark Dalphin wrote:

> For the SGI Irix 6.5, "man ld" gives:
>
>      ....
>
>      -rpath library_path
>                Adds the library_path to the search path for DSOs.  Each
>                library path is appended to the list of directories at the
>                time the executable or DSO is loaded.  This option directs
>                rld(5) to look in the named directories, but to look only
>                for DSOs, and to stop looking when the correct one is found.
>
>                This option can be specified only when the -shared or
>                -call_shared options are also in effect.  For more
>                information, see the rld(5) man page.  (C, C++, F77, F90)
>
>     ....
>
>      -shared   Produces a DSO, creates all of the tables for run-time
>                linking, and resolves references to other specified shared
>                objects.  The object created can be used by the linker to
>                make dynamic executables.  (C, C++, F77, F90)
>
>     ....
>
> Hope this helps.
> Mark
>
> Peter Eisentraut wrote:
>
> > Some platforms (OSF/cc, HPUX) are already using -rpath or equivalent, so
> > you don't have to specify a shared library search path at runtime. I think
> > that a lot more platforms could use this. Can people comment on whether
> > and how it works on their platform? Essentially,
> >
> > LDFLAGS+=-rpath '$(libdir)'
> >
> > might do the trick for most.
> >
> > --
> > Peter Eisentraut                  Sernanders v�g 10:115
> > peter_e@gmx.net                   75262 Uppsala
> > http://yi.org/peter-e/            Sweden
>
> --
> Mark Dalphin                          email: mdalphin@amgen.com
> Mail Stop: 29-2-A                     phone: +1-805-447-4951 (work)
> One Amgen Center Drive                       +1-805-375-0680 (home)
> Thousand Oaks, CA 91320                 fax: +1-805-499-9955 (work)
>
>
>

Marc G. Fournier                   ICQ#7615664               IRC Nick: Scrappy
Systems Administrator @ hub.org
primary: scrappy@hub.org           secondary: scrappy@{freebsd|postgresql}.org


Re: [HACKERS] Shared library search paths

От
Peter Eisentraut
Дата:
Oliver Elphick writes:

> As far as Debian is concerned, use of rpath is a bug.  Here's a quote from
> some Debian system documentation:
>
>   libtool automatically inserts `-rpath' settings when compiling your
>   program.

I don't think so.

> But `-rpath' can cause big problems if the referenced
>   libraries get updated. Therefore, no Debian package should use the
>   `-rpath' option.

I'm not sure I buy that. All -rpath does is add a directory to the search
path that the program consults at runtime for its shared libraries. So
it's just an alternative in place of

hard-coded into dynamic linker
/etc/ld.so.conf
LD_LIBRARY_PATH

but it's the terminally accurate alternative.

What does happen if the referenced library gets updated? Nothing. -rpath
doesn't reference any libraries, it just suggests to the runtime linker
where it might look for one. I don't want to use it to find system
libraries, I just want psql to find libpq, and the right libpq, and I want
to relieve installers from having to fiddle around with these settings.

>   libtool also refuses to link shared libraries against other shared
>   libraries.

I don't think so.


--
Peter Eisentraut                  Sernanders väg 10:115
peter_e@gmx.net                   75262 Uppsala
http://yi.org/peter-e/            Sweden