从源代码编译 R:如果直接启动,RStudio 找不到库

问题描述

我已经针对英特尔 MKL 从源代码编译了 R 4.1.0。

我已经把:

source /opt/intel/oneapi/mkl/latest/env/vars.sh intel64

~/.bashrc

如果我用 RStudio 打开 .R 文件,没问题。

但是如果我直接打开RStudio,就无法正确启动R,报错:

/usr/lib/rstudio/bin/rsession: error while loading shared libraries: libmkl_gf_lp64.so.1: cannot open shared object file: No such file or directory

这是为什么?直接启动时 RStudio 不运行 ~/.bashrc 吗?

我正在运行 Fedora 34 工作站。

解决方法

当共享库存储在“非标准位置”时,我们必须告诉动态链接器。这有时是在调用脚本中完成的(通常是捆绑软件的情况,例如,当您下载带有相当数量的共享库本地构建的 RStudio 时),但更通用的解决方案是通过其配置告诉 ldconfig .

旧系统在 /etc/ld.so.conf 中每个目录使用一行。较新的系统使用包含带有条目的小文件的目录来概括这一点(像许多其他配置一样)。因此,您可以创建一个名为 /etc/ld.so.conf.d/local-mkl.conf 的文件,并将目录路径放在其中。如果您然后运行 ​​sudo ldconfig,所有应用程序都会知道它——包括 R 和 RStudio 调用 R。