我正在尝试在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
(但仍然找不到)。因此,现在我正在考虑在我丢失的某个地方必须有其他“定义”文件。
答案 0 :(得分:3)
我花了几天的时间,但是我能够弄清楚发生了什么。
最后,有两个问题:
我缺少了一些库,不是我在问题中提到的库,而是Intel's Redistributable Libraries。
即使使用我计算机上的所有库,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的库。