From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id XAA25685; Mon, 22 Sep 2003 23:23:15 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id XAA27040 for ; Mon, 22 Sep 2003 23:23:14 +0200 (MET DST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.186]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id h8MLNE508696 for ; Mon, 22 Sep 2003 23:23:14 +0200 (MET DST) Received: from [212.227.126.160] (helo=mrelayng.kundenserver.de) by moutng.kundenserver.de with esmtp (Exim 3.35 #1) id 1A1Y9H-0003CN-00; Mon, 22 Sep 2003 23:23:11 +0200 Received: from [80.129.102.51] (helo=gate.gerd-stolpmann.de) by mrelayng.kundenserver.de with asmtp (Exim 3.35 #1) id 1A1Y9H-0000Sl-00; Mon, 22 Sep 2003 23:23:11 +0200 Received: from ice.gerd-stolpmann.de (ice.gerd-stolpmann.de [192.168.0.13]) by gate.gerd-stolpmann.de (Postfix) with ESMTP id 15D3356F1; Mon, 22 Sep 2003 23:23:11 +0200 (CEST) Received: by ice.gerd-stolpmann.de (Postfix, from userid 1000) id 9AB81B031; Mon, 22 Sep 2003 23:23:10 +0200 (CEST) Subject: Re: [Caml-list] Having problems with '-rpath' or '-rpath-link' to ocamlopt From: Gerd Stolpmann To: Narayanan Krishnamurthy Cc: caml-list@inria.fr In-Reply-To: <3F6F367E.C0E7B250@motorola.com> References: <3F6F367E.C0E7B250@motorola.com> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1064265789.961.45.camel@ice.gerd-stolpmann.de> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.4 Date: 22 Sep 2003 23:23:10 +0200 X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 ocamlopt:01 gerd:01 stolpmann:01 narayanan:01 sunos:01 gcc:01 2.95.2:01 3.06.:01 pcre:01 libpcre:01 usr:01 libpcre:01 pcre:01 usr:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk 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