我最近在proggit上看到了它的引用,(到目前为止)它没有解释。
我怀疑可能就是这个原因,但我也不确定。
我最近在proggit上看到了它的引用,(到目前为止)它没有解释。
我怀疑可能就是这个原因,但我也不确定。
当前回答
可以通过创建具有相同符号的库并在LD_PRELOAD中指定库来覆盖库存库中的符号。
有些人使用它来指定非标准位置的库,但是LD_LIBRARY_PATH更适合这个目的。
其他回答
使用LD_PRELOAD路径,可以强制应用程序加载器加载所提供的共享对象,而不是默认提供的共享对象。
开发人员通过提供共享对象的不同版本来调试应用程序。
我们已经使用它来破解某些应用程序,通过使用准备好的共享对象覆盖现有函数。
可以通过创建具有相同符号的库并在LD_PRELOAD中指定库来覆盖库存库中的符号。
有些人使用它来指定非标准位置的库,但是LD_LIBRARY_PATH更适合这个目的。
当使用LD_PRELOAD时,该文件将先于其他文件加载。使用 $export LD_PRELOAD=/path/lib用于预加载lib。这甚至也可以用在程序中。
导出mylib。env:
$ export LD_PRELOAD=/path/mylib.so
$ ./mybin
禁用:
$ unset LD_PRELOAD
使用LD_PRELOAD,可以给库优先级。
例如,你可以编写一个实现malloc和free的库。通过LD_PRELOAD加载这些,你的malloc和free将被执行,而不是标准的。