我最近在proggit上看到了它的引用,(到目前为止)它没有解释。

我怀疑可能就是这个原因,但我也不确定。


当前回答

当使用LD_PRELOAD时,该文件将先于其他文件加载。使用 $export LD_PRELOAD=/path/lib用于预加载lib。这甚至也可以用在程序中。

其他回答

导出mylib。env:

$ export LD_PRELOAD=/path/mylib.so
$ ./mybin

禁用:

$ unset LD_PRELOAD

可以通过创建具有相同符号的库并在LD_PRELOAD中指定库来覆盖库存库中的符号。

有些人使用它来指定非标准位置的库,但是LD_LIBRARY_PATH更适合这个目的。

使用LD_PRELOAD,可以给库优先级。

例如,你可以编写一个实现malloc和free的库。通过LD_PRELOAD加载这些,你的malloc和free将被执行,而不是标准的。

当使用LD_PRELOAD时,该文件将先于其他文件加载。使用 $export LD_PRELOAD=/path/lib用于预加载lib。这甚至也可以用在程序中。

LD_PRELOAD列出了包含覆盖标准集的函数的共享库,就像/etc/ld.so.一样预加载。它们是由加载器/lib/ld-linux.so实现的。如果你想覆盖一些选定的函数,你可以通过创建一个覆盖对象文件并设置LD_PRELOAD;该对象文件中的函数将只覆盖那些函数,而其他函数则保持原样。

有关共享库的更多信息,请访问 http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html