【发布时间】:2018-10-03 21:48:07
【问题描述】:
我正在尝试将第 3 方库(.so 文件)加载到 RHEL 下的 MATLAB 中。
我收到一个错误:未定义:符号:_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(但仍然没有找到)。所以现在我在想,一定有一些其他的“定义”文件在我丢失的地方。
【问题讨论】:
-
第 3 方忘记为运行时库提供 .so 文件。你需要问他们。
-
是的......不幸的是,这是一个“旧”包,所以我无权访问第三方开发人员。这不是我遇到的第一个障碍,因为开发人员的 linux 配置与我不同,这会产生“隐藏”依赖项。
-
从 Linux 命令行尝试
ldd <libraryname>。它应该向您显示该库需要链接到哪些库,以及是否找到它们。希望从那里您将能够确定您需要哪个版本的英特尔运行时库。然后,您也许可以从英特尔网站下载这些运行时。抱歉,这不是我可以远程帮助的事情...... :) -
谢谢,@cris。如果您查看我的更新,我认为您会同意这与丢失 .so 文件无关。我之前查看了
ldd,并没有缺少任何依赖项。 -
另一个选项是符号与 MATLAB 加载的其他库发生冲突。也许 MATLAB 也使用相同的英特尔库,但版本不同。然后,当它加载您的 .so 文件时,它不会尝试加载英特尔库,因为它已经拥有它,但是由于它是不同的版本,所以缺少一个符号。我以前见过这样的事情。我总是尝试使用静态链接为 MATLAB 构建东西,以避免这种类型的问题。
标签: matlab intel rhel loadlibrary