0

我正在尝试使用setenv LD_BIND_NOW TRUE. 当我在启用此选项的情况下运行可执行文件时,出现错误

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

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

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

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

4

1 回答 1

1

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

其次,尽管如果存在未解析的符号,您的应用程序不会链接,但您是否可能已经完成了某种形式的共享库更新,以便现在使用的库之一轮流使用带有未解析符号的库?或者它使用的库与它所链接的库不同?

于 2014-01-18T17:16:52.893 回答