【问题标题】:Compiling R from source: RStudio doesn't find the libraries if started directly从源代码编译 R:如果直接启动,RStudio 找不到库
【发布时间】:2021-09-06 11:52:51
【问题描述】:

我已经针对英特尔 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 打开一个 .R 文件,没问题。” ——你到底是怎么做到的?您使用的是命令行还是某些 GUI?程序通常不会自动运行您的 .bashrc 文件,因为它们通常不会启动新的 shell。您的环境只是从您当前的 shell 继承而来的。
  • 根据您使用的系统类型,您可以简单地通过文件/etc/ld.so.conf.d/local-mkl.conf 并输入您的 MKL 库目录来解决此问题。否则,您可以例如使用我发布的脚本four+ years ago in this GH repo 将 MKL 更新为系统库(通过 .deb 文件,易于干净卸载)。简而言之,这与 R 无关,而仅与您的系统如何(或者更确切地说,不)告诉它的动态链接器这些库在哪里。
  • @MrFlick 当我说“如果我用 RStudio 打开 .R 文件,没问题”时,我的意思是我双击 nautilus(文件管理器)中的 .R 文件,该文件配置为使用 RStudio 打开它
  • @DirkEddelbuettel 我在 Fedora 34 工作站上。所以我是基于 .rpm 的。但是为什么打开 .R 文件不会引发问题,而只是从头开始打开 ​​RStudio 会引发问题呢?
  • 我使用/etc/ld.so.conf.d/ 添加本地文件的第一个技巧应该非常适合您。

标签: r rstudio intel-mkl


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 2010-12-25
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多