linux – 如何转义附加到LD_PRELOAD的库路径中的空格?
作者:互联网
我在Linux上遇到LD_PRELOAD问题.我正在尝试在启动我的应用程序之前加载存在于名称中包含空格的目录中的库:
> export LD_PRELOAD='/home/myuser/MyApp\ Test/lib/mylib.so'
但是,路径没有正确使用.它会在空间存在的地方被拆分,因此它会尝试预加载这些:
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
我已经在“MyApp Test”中逃避了这个空间.通过这条路径的正确方法是什么?
编辑:根据建议导出没有转义空格,呈现相同的结果:
export LD_PRELOAD=’/home/myuser/MyApp Test/lib/mylib.so’
除了(没有引号,只是转义空间):
export LD_PRELOAD=/home/myuser/MyApp\ Test/lib/mylib.so
解决方法:
动态加载器可能只是在空间上做了一个天真的分裂,在这种情况下,它不可能让它将空间视为路径的一部分.
您可以通过创建要预加载的库的符号链接来解决此问题,该符号链接不包含任何空格.
编辑:
由http://ubuntuforums.org/showthread.php?t=1142062确认
As other variables like PATH or LD_LIBRARY_PATH, this variable may
contain list of library names separated by colons. But… for
compatibility with legacy systems it is possible to separate
LD_PRELOAD elements by spaces. And older systems did not understand
escaping so it turns out it is impossible to put full library paths
into LD_PRELOAD if they contain spaces.
标签:unix,linux,ld-preload 来源: https://codeday.me/bug/20190714/1461789.html