我正在尝试运行我的程序,这需要一个库位于
LD_PRELOAD
环境变量,带 valgrind。当我这样做时,我得到
以下错误:
ERROR: ld.so: object '/path/to/lib/libLIBRARY.so' from LD_PRELOAD cannot
be preloaded: ignored.
但是,如果我要运行程序WITHOUT valgrind,它很乐意使用
LD_PRELOAD
ed 库。
为什么会这样?有办法解决吗?
(P.S.系统是64位科学linux 5,我相信)
最佳答案
如果 valgrind 是 64 位的,而共享库和应用程序都是 32 位的,就会发生这种情况。 valgrind 本身无法加载库,但它应该为应用程序本身加载。
编辑:哦,还有...您真的不应该将 LD_PRELOAD 用于您自己的程序所需的库,仅用于调试或覆盖库。相反,在可执行文件中嵌入一个 rpath/runpath。
关于linux - Valgrind 和 LD_PRELOAD - 无法预加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046622/