【问题标题】:Why is LD_PRELOAD usage discouraged?为什么不鼓励使用 LD_PRELOAD?
【发布时间】:2015-02-03 08:54:55
【问题描述】:

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

您可以在您自己未编译的应用程序中使用 TCMalloc,方法是使用 LD_PRELOAD:

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

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

他们为什么不鼓励 LD_PRELOAD?有什么本质上的问题吗?正常链接更健壮吗?怎么样?

【问题讨论】:

  • 好吧,文档是建议一种做某事的方法,但他们不希望人们因为 而使用“LD_PRELOAD”。
  • 那些不好的原因是我想了解的。他们只说这很棘手

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    除了ysdx'的答案,LD_PRELOADwill also be ignored 的值(有充分的理由)用于setuid()ed 程序。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 2018-11-26
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多