Browse thread
[Caml-list] Having problems with '-rpath' or '-rpath-link' to ocamlopt
-
Narayanan Krishnamurthy
- Olivier Andrieu
- Gerd Stolpmann
- Jacques Garrigue
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Gerd Stolpmann <info@g...> |
| Subject: | Re: [Caml-list] Having problems with '-rpath' or '-rpath-link' to ocamlopt |
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