gpt4 book ai didi

linux - 安装带有 undefined symbol 的 R 包

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:45 24 4
gpt4 key购买 nike

我已经安装了带有 intel13 的 R-3.0.1 并且正在尝试安装 reshape2 版本 1.2.2。我正在使用 R CMD INSTALL reshape2 从源代码安装它,但出现以下错误:

Error in dyn.load(file, DLLpath = DLLpath, ...) : 
unable to load shared object '/sonas/hpcf/apps/R/install/intel13/3.0.1/lib64/R/library/stringi/libs/stringi.so':
/sonas/hpcf/apps/R/install/intel13/3.0.1/lib64/R/library/stringi/libs/stringi.so: undefined symbol: _intel_fast_memmove
ERROR: lazy loading failed for package ‘reshape2’

所以我认为 stringi.so 是使用共享的英特尔库编译的(正确?),但也许 reshape2 无法看到这些库?如何使用定义符号 _intel_fast_memmove 所需的共享库安装 reshape2

仅供引用,我正在 RHEL 6.4 上安装

最佳答案

当系统上存在多个版本的英特尔编译器并用于编译不同的东西时,此问题在动态加载环境(例如 R 和 Python)中经常发生。

如果 R 本身是用 gcc 编译的,出现这个问题的一种可能性是 stringi.so 是用(旧的)Intel 编译器 v12.1.5 编译的,而另一个库(以前加载到 R 中)是用较新的 Intel 编译的编译器 14.0.2。发生的事情是第一个库引入了第二个库的一些依赖项,并且由于依赖项是共享库共享的,所以不会加载旧的库,并且这些符号的名称发生了一些变化,因此出现了错误。这正是 Python、numpy 和 pytables 所发生的事情。

现在,如果您没有加载任何其他库,则可能是 R 本身是使用不同版本的英特尔编译器构建的,但是我更难想象,因为我更希望编译- stringi.so 的时间问题(假设它也需要链接到 R 本身)。

最重要的是,您需要确保在运行时加载的所有库都是使用相同版本的编译器编译的。根据我的经验,混合使用 gcc 和 Intel 编译器比混合使用两个不同版本的 Intel 编译器更省事。

关于linux - 安装带有 undefined symbol 的 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com