我在 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”中的空间。通过这样的路径的正确方法是什么?
编辑:按照建议在没有转义空间的情况下导出,呈现相同的结果:
以及(没有引号,只是转义空间):
最佳答案
动态加载器可能只是对空间进行了幼稚的拆分,在这种情况下,不可能将空间视为路径的一部分。
您可以通过为要预加载的库创建一个不包含任何空格的符号链接(symbolic link)来解决这个问题。
编辑:
由 http://ubuntuforums.org/showthread.php?t=1142062 确认
关于linux - 如何在附加到 LD_PRELOAD 的库路径中转义空格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10072609/