This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: R: [1.7] does LD_PRELOAD support more than 1 dll ?
- From: Marco Atzeri <marco_atzeri at yahoo dot it>
- To: cygwin at cygwin dot com
- Date: Sat, 30 May 2009 12:59:15 +0000 (GMT)
- Subject: Re: R: [1.7] does LD_PRELOAD support more than 1 dll ?
--- Sab 30/5/09, Christopher ha scritto:
> >> ? Did you export it?? That might make a
> >> difference if the shell is involved.
> >>
> >> ? ? cheers,
> >> ? ? ? DaveK
> >>
> >Hi Dave,
> >also exporting all the 3 variables in the script
> >does make no difference
> >
> >export
> PATH="$builddir/src:$builddir/liboctave:$builddir/libcruft:$PATH"
> >export LD_PRELOAD="$liboctinterp:$liboctave:$libcruft"
> >export
> LD_LIBRARY_PATH="$builddir/src:$builddir/liboctave:$builddir/libcruft:$LD_LIBRARY_PATH"
> >OCTAVE_SITE_INITFILE="$top_srcdir/scripts/startup/main-rcfile"
> \
> >? exec $driver "$builddir/src/octave"
> --no-init-path --path="$LOADPATH" --image-path="$IMAGEPATH"
> --doc-cache-file="$DOCFILE" --info-file="$INFOFILE" "$@"
> >
> >
> >? ? ? 5 [main] sh 3964
> C:\cygwin2\bin\sh.exe: *** fatal error - error while loading
> shared libraries:
> /pub/cygports/octave/octave-3.2.0-rc4_build/src/cygoctinterp.dll:
> cannot open shared object file: No such process
>
> From the source:
>
> ? ? ? if (!LoadLibraryW
> (lib.get_wide_win32_path (libname)))
> ? ? ? ? {
> ? ? ? ? ? __seterrno ();
> ? ? ? ? ? api_fatal ("error while
> loading shared libraries: %s: "
> ? ? ? ? ? ? ? ?
> ? ???"cannot open shared object file:
> %s", p,
> ? ? ? ? ? ? ? ?
> ? ???strerror (get_errno ()));
> ? ? ? ? }
>
> "No such process" == ESRCH == PROC_NOT_FOUND
>
> cgf
Hi Christopher
but the dll file is there:
$ ls -lh /pub/cygports/octave/octave-3.2.0-rc4_build/src/cygoctinterp.dll
-rwxr-xr-x 1 itq00146 Domain_Users 202M May 27 20:01 /pub/cygports/octave/octave-3.2.0-rc4_build/src/cygoctinterp.dll
so how can it fail to load dlls only with LD_PRELOAD defined ?
Ok, I found it.
The order is also relevant
cygoctinterp.dll requires
cygcruft.dll and cygoctave.dll
cygoctave.dll requires
cygcruft.dll
So the working way is :
export LD_PRELOAD="$libcruft:$liboctave:$liboctinterp"
Regards
Marco
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/