I'm having a problem with LD_PRELOAD on Linux. I'm trying to load a library existing in a directory with spaces in its name, right before launching my application:
> export LD_PRELOAD='/home/myuser/MyApp\ Test/lib/mylib.so'
However, the path is not being taken properly. It gets split where the space exists, so it tries to preload these:
ERROR: ...: object '/home/myuser/MyApp' from LD_PRELOAD cannot be preloaded: ignored
ERROR: ...: object 'Test/lib/mylib.so' from LD_PRELOAD cannot be preloaded: ignored
I'm already escaping the space in 'MyApp Test'. What is the correct way to pass such path?
Edit: exporting without the escaped space as suggested, renders the same results:
export LD_PRELOAD='/home/myuser/MyApp Test/lib/mylib.so'
As well as (no quotes, just escaped space):
export LD_PRELOAD=/home/myuser/MyApp\ Test/lib/mylib.so
je4d :
The dynamic loader is probably just doing a naive split on spaces, in which case it's impossible to get it to treat the space as part of your path.\n\nYou can work around it by creating a symlink to the library you want to preload that doesn't contain any spaces.\n\nEdit:\n\nconfirmed by http://ubuntuforums.org/showthread.php?t=1142062\n\n\n As other variables like PATH or LD_LIBRARY_PATH, this variable may\n contain list of library names separated by colons. But... for\n compatibility with legacy systems it is possible to separate\n LD_PRELOAD elements by spaces. And older systems did not understand\n escaping so it turns out it is impossible to put full library paths\n into LD_PRELOAD if they contain spaces.\n",
2012-04-09T12:42:22