如何将库path中的空格附加到LD_PRELOAD?

我在Linux上遇到LD_PRELOAD问题。 我试图在启动我的应用程序之前加载名称中带有空格的目录中存在的库:

> export LD_PRELOAD='/home/myuser/MyApp\ Test/lib/mylib.so' 

但是,path没有被正确地采取。 它被分割的地方存在,所以它试图预加载这些:

 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 

我已经逃脱了“MyApptesting”的空间。 传递这种path的正确方法是什么?

编辑:导出没有逃脱的空间build议,呈现相同的结果:

export LD_PRELOAD ='/ home / myuser / MyApp Test / lib / mylib.so'

以及(不引用,只是逃脱的空间):

导出LD_PRELOAD = / home / myuser / MyApp \ Test / lib / mylib.so

动态加载器可能只是在空间上做一个天真的分割,在这种情况下,不可能把它看作是你的路径的一部分。

您可以通过创建一个符号链接来预先加载不包含任何空格的库。

编辑:

http://ubuntuforums.org/showthread.php?t=1142062确认

像其他变量(如PATH或LD_LIBRARY_PATH)一样,该变量可能包含以冒号分隔的库名称列表。 但是…为了兼容遗留系统,可以用空格分隔LD_PRELOAD元素。 而旧的系统不知道转义,因此如果包含空格,则不可能将完整的库路径放入LD_PRELOAD。

实际上,可以通过向LD_LIBRARY_PATH添加具有空格的路径,然后使用不带路径名的LD_PRELOAD来解决此问题。 例如:

 export LD_LIBRARY_PATH="/home/myuser/MyApp\ Test/lib/":${LD_LIBRARY_PATH} export LD_PRELOAD=mylib.so