我正在尝试使用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是否已被错误地构建?是否有可以在有限时间内实现的修复?
答案 0 :(得分:1)
首先,我认为你需要LD_BIND_NOW=1
(而不是TRUE
,尽管这可能是同义词)。
其次,虽然你的应用程序没有链接,但是有一个未解决的符号,你是否可能已经完成了某种形式的共享库更新,以便现在使用的一个库依次使用一个未解析的符号库?或者它正在使用与其链接的库不同的库?