LD_BIND_NOW:符号查找错误,但可执行文件仍在运行

时间:2014-01-18 17:05:05

标签: c++ linux intel-mkl

我正在尝试使用setenv LD_BIND_NOW TRUE诊断链接器/运行时错误。当我启用此选项运行可执行文件时,我收到错误

   lib/libmkl_intel_thread.so: error: symbol lookup error: undefined symbol: DftiFreeDescriptor (fatal)

但是,如果我然后删除LD_BIND_NOW环境变量,程序执行就好了(直到终止,然后报告内存损坏 - 尽管这可能是无关的)。

所以我有点困惑:程序在有符号查找错误时如何执行?我认为它必须终止,因为程序是用C ++编写的,而不是Java。 (参见here以供参考。)

此外,此错误是否意味着我的rpath设置不正确,或者MKL是否已被错误地构建?是否有可以在有限时间内实现的修复?

1 个答案:

答案 0 :(得分:1)

首先,我认为你需要LD_BIND_NOW=1(而不是TRUE,尽管这可能是同义词)。

其次,虽然你的应用程序没有链接,但是有一个未解决的符号,你是否可能已经完成了某种形式的共享库更新,以便现在使用的一个库依次使用一个未解析的符号库?或者它正在使用与其链接的库不同的库?