安装 R 包时 libstdc++ 的路径

Flo*_*ciu 4 gcc r libstdc++

所以我一直在尝试安装一个名为igraph. 最后,当它尝试加载包时,出现以下错误:

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /tools/R/2.15.2/lib64/R/library/igraph/libs/igraph.so)
Run Code Online (Sandbox Code Playgroud)

对我来说,这个错误意味着libstdc++.so.6. 但是,我没有使用该文件。快速浏览一下我的 LD_LIBRARY_PATH:

 echo $LD_LIBRARY_PATH 
/tools/gcc/4.7.0/lib64
Run Code Online (Sandbox Code Playgroud)

在该目录中有一个名为 libstdc++.so.6 的文件,以下显示 GLIBCXX_3.4.15 实际上存在:

strings /tools/gcc/4.7.0/lib64/libstdc++.so.6 | grep GLIB
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
Run Code Online (Sandbox Code Playgroud)

我不明白为什么 R 很顽固,不使用 gcc 目录下的文件,并不断尝试引用 /user/lib64 目录。有没有人有想法?

Flo*_*ciu 5

原来有一个文件被$RHOME/etc/调用ldpaths,它LD_LIBRARY_PATH出于某种原因清除了环境变量。我将 重置LD_LIBRARY_PATH为该文件中的首选路径,重新启动 R,并且该软件包安装得非常顺利。

在旁节点上:我认为对于这样一个成熟的软件来说这是荒谬的行为。

  • 它没有清除它:它预先添加了编译 R 时使用的目录。在安装 R 和安装 igraph 之间,您显然更改了系统上的某些内容。期待其他事情打破... (2认同)