Why is LD_LIBRARY_PATH unset in FC6 and not in FC5
Phil Meyer
pmeyer at themeyerfarm.com
Wed Jun 6 15:55:04 UTC 2007
Pelle Svensson wrote:
> Hi,
>
> Why is LD_LIBRARY_PATH not exported in following test on FC6.
>
> Put Makefile, SubMakefile and Subscript in a directory and issue make.
>
> Result if run as user:
> []$ make
> ================
> In Makefile: LD_LIBRARY_PATH=/home/testing and TEST_PATH=/home/testing
> make[1]: Entering directory `/home/pelle/diverse/make-fc6'
> In SubMakefile: LD_LIBRARY_PATH= and TEST_PATH=/home/testing
> make[1]: Leaving directory `/home/pelle/diverse/make-fc6'
> In SubScript: LD_LIBRARY_PATH=/home/testing and TEST_PATH=/home/testing
>
>
> Result if run as root:
> []$ sudo make
> ================
> In Makefile: LD_LIBRARY_PATH=/home/testing and TEST_PATH=/home/testing
> make[1]: Entering directory `/home/pelle/diverse/make-fc6'
> In SubMakefile: LD_LIBRARY_PATH=/home/testing and TEST_PATH=/home/testing
> make[1]: Leaving directory `/home/pelle/diverse/make-fc6'
> In SubScript: LD_LIBRARY_PATH=/home/testing and TEST_PATH=/home/testing
>
>
> On FC5 when running as user SubMakefile will have
> 'LD_LIBRARY_PATH=/home/testing'
>
> /Pelle
>
> _________________________________________________________________
> Spela roliga Worms'07 i mobilen
> http://msn.cellus.se/?page=game_order&itemId=878908
I am no expert in compilers, but this issue has existed sin we were
doing gcc on Solaris 2.1 (1992). Someone with better knowledge feel
free to respond, but these are my observations:
root has special precautions about prepended library paths. That is a
common trick of old security hackers.
In modern times. LD_LIBRARY_PATH simply should not be used any where.
When building an application you can set LD_RUN_PATH and that will embed
the run path into the binary.
For applications that might move locations, there has been a method
provided for years, by placing a simple text file with a run path in
/etc/ld.so.conf.d the loader linker will use it as if LD_LIBRARY_PATH
had been set.
This makes for an easily relocatable rpm, because the rpm can drop a
text file in there that points to wherever the rpm has been located.
In your example above, simply change LD_LIBRARY_PATH to LD_RUN_PATH and
you will get what you want, AND users will not need to set LD_LIBRARY_PATH.
Some discussion here:
http://osr507doc.sco.com/en/tools/ccs_linkedit_dynamic_dirsearch.html
LD_RUN_PATH seems to be absent here:
http://gcc.gnu.org/onlinedocs/gcc-4.2.0/gcc/Environment-Variables.html#Environment-Variables
So maybe I am just getting old, but I am sure that the principle is
good, even if my failing memory is not. :)
More information about the fedora-list
mailing list