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. :)