【问题标题】:Got message unable to load shared object stats.so when R starts收到消息无法加载共享对象 stats.so 当 R 启动时
【发布时间】:2014-01-24 12:45:15
【问题描述】:

我在 Linux 64 上使用从源代码编译的 R-3.0.2,当 R 启动时我收到以下消息:

Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/home/hlfernandez/Eclipse/workspace/Bioscope/R/linux/x64/R-3.0.2/library/stats/libs/stats.so':
  libgfortran.so.3: cannot open the shared object file: No existe el archivo o el directorio
Durante la inicialización - Mensajes de aviso perdidos
package ‘stats’ in options("defaultPackages") was not found 

有人知道问题的根源吗?它很少会说文件或目录不存在,因为它确实存在。

我的操作系统是 Kubuntu 13.10,也许我缺少任何库。

【问题讨论】:

  • 看起来你应该找到 stats 包,下载它,然后在 R 中安装它。

标签: r load


【解决方案1】:

不知何故,您的系统配置或运行环境在您编译 R 和使用它之间发生了变化,特别是 libgfortran.so.3 库不再被发现。如果你这样做可能会

$ R CMD ldd /path/to/R_HOME/library/stats/libs/stats.so

您将获得成功发现的链接依赖项列表

linux-vdso.so.1 =>  (0x00007fff213ff000)
libRlapack.so => /path/to/R_HOME/lib/libRlapack.so (0x00007fcafa557000)

然后是失败

    libgfortran.so.3 => ???

表示未找到 libgfortran.so.3。你可以去找找

locate libgfortran.so.3

然后弄清楚你做了什么让 R 无法访问它(也许 ldconfig 会是你的朋友)。但 libgfortran 很可能位于标准位置,因此您可能已在其他操作中将其删除并需要重新安装它,或者针对 libgfortran 的新位置重新编译 R。

使用系统命令 ldconfig(需要 sudo 权限)或环境变量 LD_LIBRARY_PATH 指定 libgfortran 的位置。但实际上这些不是必需的,libgfortan 应该已经使用您的操作系统包管理器安装,并且不需要特殊的额外配置。

【讨论】:

  • 如果 echo $R_HOME 没有从 bash 中找到它,R.home() 可能来自 R。
【解决方案2】:

编辑:我发现将缺少的库放在目录R/lib 可以解决问题,非常感谢您的帮助!

如果我运行ldd 命令,我会得到:

bin/R CMD ldd ./library/stats/libs/stats.so
/home/hlfernandez/Eclipse/workspace/Bioscope/R/linux/x64/R-3.0.2

linux-vdso.so.1 =>  (0x00007fff47dfe000)

libRlapack.so => /home/hlfernandez/Eclipse/workspace/Bioscope/R/linux/x64/R-3.0.2/lib/libRlapack.so (0x00007fb595bb0000)

libRblas.so => /home/hlfernandez/Eclipse/workspace/Bioscope/R/linux/x64/R-3.0.2/lib/libRblas.so (0x00007fb595983000)

libgfortran.so.3 => not found

libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb595665000)

libR.so => /home/hlfernandez/Eclipse/workspace/Bioscope/R/linux/x64/R-3.0.2/lib/libR.so (0x00007fb5950c3000)

libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007fb594eb4000)

libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb594c97000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb5948ce000)

libgfortran.so.3 => not found

libreadline.so.6 => /lib/x86_64-linux-gnu/libreadline.so.6 (0x00007fb59468c000)

librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb594483000)

 libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb59427f000)

/lib64/ld-linux-x86-64.so.2 (0x00007fb596205000)

 libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007fb594056000)

正如您所说,libgfortran.so.3 出现故障。 ¿ 有没有办法手动指示 libgfortran3.so 文件的位置?

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 2023-03-08
    • 1970-01-01
    • 2018-09-17
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2015-05-23
    相关资源
    最近更新 更多