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