Linux 安装带有未定义符号的R程序包

Linux 安装带有未定义符号的R程序包,linux,r,intel,Linux,R,Intel,我已经用intel13安装了R-3.0.1,并且正在尝试安装Reforme21.2.2版。我正在使用R CMD INSTALL reformae2从源代码处安装它,但出现以下错误: 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/string

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

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
是用共享的英特尔库编译的(正确吗?),但可能
restrape2
无法看到这些库?如何使用定义符号所需的共享库安装
重塑2


仅供参考,我正在RHEL 6.4上安装此问题在动态加载环境(如R和Python)中经常出现,因为系统上有多个版本的英特尔编译器,用于编译不同的内容

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

现在,如果您不加载任何其他库,可能是R本身是用不同版本的英特尔编译器构建的,但这对我来说更难想象,因为我更希望stringi.so会出现编译时问题(假设它也需要与R本身链接)

总之,您需要确保运行时加载的所有库都是使用相同版本的编译器编译的。根据我的经验,混合使用gcc和英特尔编译器比混合使用两种不同版本的英特尔编译器本身更省钱