【发布时间】:2021-09-28 07:23:41
【问题描述】:
当我尝试从源代码编译 R 包时,它使用 R 安装目录中 etc/Makeconf 中定义的编译器和设置。如何覆盖这些设置?
我有一个~/.R/Makevars 文件(建议例如here),我在其中包含了我想要的设置,但由于某种原因这些设置没有被使用。为什么不呢,我该如何解决这个问题?
我在~/.R/Makevars 和Makeconf 上找不到官方文档——欢迎提供链接。
在过去,这个相同的设置曾经对我正常工作,但最近却不行。我认为最近的 R 版本一定发生了一些变化,但我不确定什么时候。最近是否有任何变化可能会对此产生影响?
动机和背景:
我在 macOS 上,我想使用来自 MacPorts 的gfortran。因此我在~/.R/Makevars 中设置了FC = /opt/local/bin/gfortran-mp-11 和FLIBS = -L/opt/local/lib/gcc11 -lgfortran -lquadmath -lm。但是,系统仍然想在/usr/local 中使用gfortran 安装,而我的机器上不存在该安装。它显然采用了来自etc/Makeconf 的路径和选项。我正在使用官方的 R 二进制文件。
【问题讨论】:
-
@zx8754 感谢您的链接。我看过那个问题。答案是
~/.R/Makevars应该 覆盖Makeconf,但在我的机器上却没有。我的问题是:为什么不是,我该如何解决?我怀疑在过去一年半左右的时间里,R 中一定发生了一些变化,因为在那之前一切正常,而且我不记得在我的机器上进行过任何相关的更改(除了更新 R)。 -
您需要使用备用编译器从源代码重建 R。然后
etc/Makeconf将包含有关您使用的编译器的信息。如果你不这样做,你可能会因为不同编译器所做的假设之间的差异而遇到问题。你也许可以让它工作,但你永远无法确定。 -
@Szabolcs:我们对此表示怀疑。 R 扩展这些变量,它将读取
~/.R/Makevars并应用它。很多人,包括 R Core,都依赖它来微调构建。您将必须证明它如何/为什么不起作用。 事前问题是您本地的。也许$HOME或$USER搞砸了或相关的东西。 -
@Szabolcs
~/.R/Makeconf最好是更改,但不替换默认设置。我不是 mac 用户,但我相信 mac.r-project.org 的建议是使用他们的工具链。 -
所以不,您创建了一个非标准设置,并且想知道为什么它的行为不像标准设置。