How to force using local shared libraries over system libraries?

前端 未结 2 558
予麋鹿
予麋鹿 2020-12-29 09:25

How can I force using a local library over the system library in linux?

I linked my executable explicitly to some .so files in my project/lib directory e.g. (../lib

相关标签:
2条回答
  • 2020-12-29 09:58

    When you link, specify the directory of the library and also use an rpath:

    -Wl,-rpath,/absolute/path/to/your/library -L/absolute/path/to/your/library -llibrary

    -L tells the linker where to find your library at link time, and -rpath tells it where to search for the library at runtime.

    Note that -L and -rpath need the directory that contains your .so file, not the actual path of the library file itself.

    0 讨论(0)
  • 2020-12-29 10:02

    I have to question why you want to use your own version of a library over a system-provided version (having multiple different versions floating around is nothing but a recipe for trouble and user confusion).

    However, you should be able to export LD_PRELOAD=<path_to_your_shared_obj> to force it to load your own version.

    Note that no mechanism to override library versions will persist through any sort of privilege elevation (for example sudo).

    0 讨论(0)
提交回复
热议问题