MATLAB loadlibrary error: Undefined symbol: _intel_fast_memmove

MATLAB loadlibrary error: Undefined symbol: _intel_fast_memmove

我正在尝试将第 3 方库(.so 文件)加载到 RHEL 下的 MATLAB 中。

我收到一个错误:undefined:symbol:_intel_fast_memmove。

Symbol lookup error: _FileName_: undefined symbol: _intel_fast_memmove 看来我需要将 /opt/intel 的子目录添加到我的 LD_LIBRARY_PATH 环境变量中,但我没有 /opt/intel目录。

更新:

MATLAB 说在尝试加载 libifcoremt.so.5 时出现问题。我已经安装了 Intel's Redistributable Libraries,所做的只是调用英特尔版本的 libifcoremt.so.5,但仍在寻找 _intel_fast_memmove(但仍然没有找到)。所以现在我在想一定还有其他一些 "definitions" 文件我丢失了。

我花了几天时间,但我能够弄清楚发生了什么。

最后遇到了两个问题:

  1. 我错过了一些图书馆——不是我在问题中提到的图书馆,而是 Intel's Redistributable Libraries.

  2. 即使我的电脑上有所有库,MATLAB 仍在使用一些旧版本的 .os 文件。

    我在问题中没有提到虽然第 3 方库是相当新的,但我是从 MATLAB 2012B 调用它的,因为我需要将它与软件包集成这不适用于更高版本的 MATLAB。对于我的遗漏,我深表歉意——事实证明这是拼图的关键部分。

    在诊断os这个问题时,我了解到 MATLAB 在 <MATLAB>/sys/os/glnxa64 子目录 中有自己的英特尔库副本它创建了一个 LD_LIBRARY_PATH 的内部版本,它指向它从 Linux OS 导入的 LD_LIBRARY_PATH 之前的内部版本。由于我使用的 MATLAB 版本是 6 年的,所以它是 Intel 库,它不包含新库中定义的一些符号,例如 intel_fast_memmove.

为了启动集成系统和 运行,我制定了一个解决方法,在调用第 3 方库之前重命名 sys/os/glnxa64,以便 MATLAB 找到更新的 Intel 库而不是 MATLAB 2012B版本。然后在完成后将其重新命名(没有该目录,MATLAB 将无法启动)。

注意:我首先尝试在 MATLAB 2012B 中编辑 LD_LIBRARY_PATH 的值以更喜欢新的 Intel 库,但发现即使外部变量值发生变化,loadlibrary 仍然使用原始值将 MATLAB 的库放在路径的第一位。