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

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


当前回答

下面是一篇关于预加载的详细博文:

https://blog.cryptomilk.org/2014/07/21/what-is-preloading/

其他回答

使用LD_PRELOAD路径,可以强制应用程序加载器加载所提供的共享对象,而不是默认提供的共享对象。

开发人员通过提供共享对象的不同版本来调试应用程序。

我们已经使用它来破解某些应用程序,通过使用准备好的共享对象覆盖现有函数。

如果将LD_PRELOAD设置为共享对象的路径,则该文件将在任何其他库(包括C运行时libc.so)之前加载。所以要用你特殊的malloc()实现运行ls,这样做:

$ LD_PRELOAD=/path/to/my/malloc.so /bin/ls

导出mylib。env:

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

禁用:

$ unset LD_PRELOAD

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

下面是一篇关于预加载的详细博文:

https://blog.cryptomilk.org/2014/07/21/what-is-preloading/