Ccna final exam - java, php, javascript, ios, cshap all in one. This is a collaboratively edited question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.
Wednesday, May 23, 2012
What is the LD_PRELOAD trick?
I came across a reference to it recently on proggit and (as of now) it is not explained.
I suspect this might be it, but I don't know for sure.
If you set LD_PRELOAD to the path of a shared object, that file will be loaded before any other library (including the C runtime, libc.so). So to run ls with a your special malloc() implementation, do this:
With LD_PRELOAD you can give libraries precedence.
For example you can write a library which implement malloc and free. And by loading these with LD_PRELOAD your malloc and free will be executed rather than the standard ones.
If you set LD_PRELOAD to the path of a shared object, that file will be loaded before any other library (including the C runtime, libc.so). So to run ls with a your special malloc() implementation, do this:
ReplyDelete$ LD_PRELOAD=/path/to/my/malloc.so /bin/ls
With LD_PRELOAD you can give libraries precedence.
ReplyDeleteFor example you can write a library which implement malloc and free. And by loading these with LD_PRELOAD your malloc and free will be executed rather than the standard ones.
You can override symbols in the stock libraries by creating a library with the same symbols and specifying the library in LD_PRELOAD.
ReplyDeleteSome people use it to specify libraries in nonstandard locations, but LD_LIBRARY_PATH is better for that purpose.