[plt-scheme] PLT Scheme linux distribution
At Tue, 26 Jun 2007 17:01:15 -0700, "Keith Frost" wrote:
> On 6/26/07, Glauber Prado <glauberalex at uol.com.br> wrote:
> > i think i could be completely wrong but isnt the env variable
> > "LD_LYBRARY_PATH" used to handle this on linux env?
>
> Right. I was hoping that if I just set this environment variable to
> include the path to libmzscheme3m-370.so, that mzscheme would find the
> lib. But it seems the PLT installation doesn't depend on
> LD_LIBRARY_PATH (or ldconfig ?) to find the shared library, instead
> hard-coding the path.
Yes, you can set LD_LIBRARY_PATH to include the path to
libmzscheme3-370.so, and then it will be found when starting the
`mzscheme' executable.
The build-specified path is hardwired into the executable as an
"rpath", which essentially adds to the front of LD_LIBRARY_PATH, but
doesn't cause it to be ignored.
Of course, setting LD_LIBRARY_PATH is not the same as having a path in
the executable that is relative to the executable. Some Unix variants
do support such paths, but not Linux (I think). In general, the
Unix/Linux way of doing things is to always put shared libraries in one
place.
It's possible to create a stub script/executable that doesn't use
shared libraries, and that sets LD_LIBRARY_PATH before exec'ing the
`mzscheme' binary. In fact, that's what you get when you create a PLT
Scheme executable under Linux (when using shared libraries). It's an
abuse of LD_LIBRARY_PATH, though there doesn't seem to be a reasonable
alternative for creating self-contained executable packages.
Matthew