R启动时收到消息无法加载共享对象stats.so

hlf*_*dez 14 load r

我在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 
Run Code Online (Sandbox Code Playgroud)

有没有人知道问题的根源?它很少说文件或目录不存在,因为它实际存在.

我的操作系统是Kubuntu 13.10,也许我有任何遗失的库.

Mar*_*gan 14

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

$ R CMD ldd /path/to/R_HOME/library/stats/libs/stats.so
Run Code Online (Sandbox Code Playgroud)

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

linux-vdso.so.1 =>  (0x00007fff213ff000)
libRlapack.so => /path/to/R_HOME/lib/libRlapack.so (0x00007fcafa557000)
Run Code Online (Sandbox Code Playgroud)

然后是失败

    libgfortran.so.3 => ???
Run Code Online (Sandbox Code Playgroud)

表示找不到libgfortran.so.3.你可以去寻找它

locate libgfortran.so.3
Run Code Online (Sandbox Code Playgroud)

然后弄清楚你做了什么让R无法访问(也许ldconfig会成为你的朋友).但libgfortran最有可能位于标准位置,所以你可能已经在其他一些操作中将其删除,需要重新安装它,或者在libgfortran的新位置重新编译R.

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


hlf*_*dez 5

编辑:我发现将丢失的库放在目录中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)
Run Code Online (Sandbox Code Playgroud)

如你所说,libgfortran.so.3失败了.¿有没有办法手动指出libgfortran3.so文件的位置?