Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Gerd Stolpmann <info@gerd-stolpmann.de>
To: Narayanan Krishnamurthy <Narayanan.Krishnamurthy@motorola.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Having problems with '-rpath' or '-rpath-link' to ocamlopt
Date: 22 Sep 2003 23:23:10 +0200	[thread overview]
Message-ID: <1064265789.961.45.camel@ice.gerd-stolpmann.de> (raw)
In-Reply-To: <3F6F367E.C0E7B250@motorola.com>

Am Mon, 2003-09-22 um 19.50 schrieb Narayanan Krishnamurthy:
> Hi,
> 
> All the following discussions pertain to SunOS 5.8
> the gnu linker 'ld 2.9.1', the gcc compiler 'gcc 2.95.2' and
> ocaml 3.06.
> 
> I have two versions of the PCRE "C" libpcre.so
> libraries. Let us say that the locations
> of the "C" libraries are as follows.
> 
> a) v1.0 : /usr/local/lib/libpcre.so
> b) v2.0 : /mylocal/libpcre.so
> 
> I've built the ocaml pcre package (5.02: pcre.cmxa and pcre.cma) 
> using the "C" v2.0 shared library /mylocal/libpcre.so.
> I have pcre.cmxa in my current working directory.
> 
> With my LD_LIBRARY_PATH set as
> LD_LIBRARY_PATH = /lib:/usr/lib:/usr/local/lib

No chance. LD_LIBRARY_PATH is searched before any RPATH that is recorded
in the .so file.

> I now run
> a) ocamlopt -o myexec pcre.cmxa myexec.o \
>      -cclib -rpath/mylocal -cclib -lpcre
> 
> and find that 'myexec' has the /usr/local/lib/libpcre.so
> as the run-time shared library instead of
> /mylocal/libpcre.so (I use 'ldd' on 'myexec')
> 
> I tried the following as well and am unable to get
> ocamlopt to link in the run-time library /mylocal/libpcre.so.
> 
> b) ocamlopt -o myexec pcre.cmxa myexec.o \
>      -cclib -R/mylocal -cclib -lpcre
> c) ocamlopt -o myexec pcre.cmxa myexec.o \
>      -cclib -rpath-link/mylocal -cclib -lpcre

If you do "dump -Lv myexec" you will see that the effect is the same:
The RPATH section of the file is set to /mylocal.

> If I unset my LD_LIBRARY_PATH, everything works fine
> and the correct library is linked in (I tried
> 'strings pcre.cmxa' and see the path /mylocal hard-coded
> in there).
> If I set LD_LIBRARY_PATH as
> /lib:/usr/lib:/mylocal:/usr/local/lib
> it works fine.
> 
> It seems like I am unable to override the LD_LIBRARY_PATH
> environment variable using '-rpath' for the linker.
> So, what am I doing wrong with the '-rpath' or '-rpath-link'
> commands that I'm passing through 'ocamlopt'?
> Any information would be greatly appreciated.
> Thanks.

Because of the phenomenons you have found it is a very bad idea to set
LD_LIBRARY_PATH. This variable is a debugging aid, and no substitute for
a proper system setup.

Fortunately you run Solaris 8. For previous versions, the only way out
is to drop the idea of extending the system search path for libraries,
and to use RPATH all the time. For Solaris 8, you can modify the system
search path with the crle utility:

crle -l /usr/lib -l /usr/local/lib

Note that using crle is dangerous, and wrong usage may corrupt your
system (you can end up that you cannot start any program), so read the
man page.

Gerd
-- 
------------------------------------------------------------
Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany 
gerd@gerd-stolpmann.de          http://www.gerd-stolpmann.de
------------------------------------------------------------

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2003-09-22 21:23 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-22 17:50 Narayanan Krishnamurthy
2003-09-22 21:07 ` Olivier Andrieu
2003-09-22 21:23 ` Gerd Stolpmann [this message]
2003-09-24  2:44 ` Jacques Garrigue

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1064265789.961.45.camel@ice.gerd-stolpmann.de \
    --to=info@gerd-stolpmann.de \
    --cc=Narayanan.Krishnamurthy@motorola.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox