Valgrind和LD_PRELOAD-无法预加载对象

Vol*_*orm 5 linux valgrind ld

我试图运行我的程序,该程序需要LD_PRELOAD使用valgrind 在 环境变量中包含一个库。当我这样做时,出现以下错误:

ERROR: ld.so: object '/path/to/lib/libLIBRARY.so' from LD_PRELOAD cannot
be preloaded: ignored.
Run Code Online (Sandbox Code Playgroud)

但是,如果我要在不使用 valgrind的情况下运行该程序,那么它将很高兴使用 LD_PRELOADed库。

为什么会这样呢?有办法解决吗?

(我相信PS系统是64位科学linux 5,)

o11*_*11c 1

如果 valgrind 是 64 位,并且共享库和应用程序都是 32 位,则可能会发生这种情况。valgrind 本身无法加载库,但它应该为应用程序本身加载。

编辑:哦,还有...您确实不应该将 LD_PRELOAD 用于您自己的程序所需的库,而只能用于调试或以其他方式覆盖库。相反,在可执行文件中嵌入 rpath/runpath。