MATLAB loadlibrary错误:未定义符号:_intel_fast_memmove

时间:2018-10-03 21:48:08

标签: matlab intel rhel loadlibrary

我正在尝试在RHEL下将第3方库($ snakemake --dag all | dot -Tpng > dag.png 文件)加载到MATLAB中。

我遇到一个错误:未定义:符号:_intel_fast_memmove。

documentation看来,我需要将/ opt / intel的子目录添加到我的LD_LIBRARY_PATH环境变量中,但是我没有/ opt / intel目录。

更新:

MATLAB表示尝试加载.so时出现了问题。此后,我已经安装了Symbol lookup error: _FileName_: undefined symbol: _intel_fast_memmove,所有操作都被称为Intel的libifcoremt.so.5版本,但仍在寻找libifcoremt.so.5(但仍然找不到)。因此,现在我正在考虑在我丢失的某个地方必须有其他“定义”文件。

1 个答案:

答案 0 :(得分:3)

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

最后,有两个问题:

  1. 我缺少了一些库,不是我在问题中提到的库,而是Intel's Redistributable Libraries

  2. 即使使用我计算机上的所有库,MATLAB仍在使用某些.os文件的旧版本。

    我没有在问题中提及第三方库是最近的,但我是从MATLAB 2012B 调用它的,因为我需要将其与无法正常工作的软件包集成在更高版本的MATLAB中正确显示。对于这一疏漏,我深表歉意-事实证明,这是难题的关键所在。

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

为使集成系统正常运行,我建立了一种变通方法,在调用第三方库之前重命名sys/os/glnxa64,以便MATLAB找到较新的Intel库,而不是MATLAB 2012B版本。然后将其命名为完成(没有该目录,MATLAB将不会启动)。

注意:我首先尝试在MATLAB 2012B中编辑LD_LIBRARY_PATH的值,以使用新的Intel库,但是发现即使外部变量值发生了变化,loadlibrary仍使用放置的原始值首先是MATLAB的库。