【发布时间】:2008-11-07 19:04:16
【问题描述】:
我想用 printf 的修改版本创建一个库,然后调用 LD_PRELOAD 所以当我的程序调用 printf 时,它会使用我的版本。有人可以向我解释如何使用 LD_PRELOAD 以及我的代码或库中是否需要做一些特别的事情?
【问题讨论】:
我想用 printf 的修改版本创建一个库,然后调用 LD_PRELOAD 所以当我的程序调用 printf 时,它会使用我的版本。有人可以向我解释如何使用 LD_PRELOAD 以及我的代码或库中是否需要做一些特别的事情?
【问题讨论】:
您只需将环境变量LD_PRELOAD 设置为替换库的完整路径。由于您在此之后启动的所有程序都将尝试使用此库,因此您可能需要创建一个包装脚本来设置 LD_PRELOAD 然后调用您要运行的程序。
【讨论】:
LD_PRELOAD 和阴影都应该处理极端护理。我记得在 GLib 内部发生变化时,在 gpgme 代码(或其他与 gpg 相关的代码)中发现了阴影 g_malloc 的错误。 简单的答案是 - 不要这样做。更复杂的 - 当且仅当你必须这样做 - 通常你不这样做(除非你编写某种调试软件)。
【讨论】:
这似乎是个坏主意。为什么不将您的 printf 版本命名为其他名称?
【讨论】: