为什么不鼓励使用LD_PRELOAD?

时间:2014-12-05 08:23:27

标签: c++ compilation shared-libraries ld-preload

我在Google的tcmalloc文档页面上发现了这条建议。

  

您可以使用LD_PRELOAD在您自己编译的应用程序中使用TCMalloc:

$ LD_PRELOAD="/usr/lib/libtcmalloc.so" 
     

LD_PRELOAD很棘手,我们不一定推荐这种使用方式。

为什么他们不鼓励LD_PRELOAD?它固有的错误吗?正常链接更健壮吗?怎么样?

2 个答案:

答案 0 :(得分:3)

使用LD_PRELOAD时,tcmalloc实现也将用于任何子进程,这可能不是您想要的。

答案 1 :(得分:2)

除了ysdx'回答之外,还有LD_PRELOAD will also be ignored(有充分理由)setuid()版程序的价值。

根据用例,这可能是不合需要的。例如,您不能编写导出LD_PRELOAD然后执行实际程序的shell脚本包装器。