在 R 中为 Windows 设置 C 编译器 (CC)

Set C compiler (CC) in R for Windows

更新到 RStudio 1.2 时,我不得不从使用 32 位版本的 R 切换到 64 位版本的 R。 但是,R C 编译器命令仍在查找 32 位版本的 MinGW,这意味着我无法为 64 位安装编译包。

我已尝试卸载并重新安装 RTools 3.5 和 R 3.6.0,并且 PATHBINPREF 环境变量指向适当的 64 位文件夹。尽管如此,R 在编译包含 C 源代码的包时仍在寻找 32 位 C 编译器:R CMD config CC returns C:/Rtools/mingw_32/bin/gcc,但我不知道如何将其更改为mingw_64

因此,当我 运行 devtools::install()(或 checkload_all 等)时,我遇到了一个错误:

* installing *source* package 'MYPACKAGE' ...
** using staged installation
** libs
sh: line 6: C:/Rtools/mingw_32/bin/nm: No such file or directory
C:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o MYPACKAGE.dll tmp.def [...] -LC:/PROGRA~1/R/R-36~1.0/bin/x64 -lR
sh: line 8: C:/Rtools/mingw_32/bin/g++: No such file or directory
no DLL was created
ERROR: compilation failed for package 'MYPACKAGE'

RStudio 弹出一个对话框提供安装 RTools,但继续安装没有帮助:CC 路径未更改。

C:\Program files\R\R-3.6.0\etc\x64\Makeconf 中指定的 BINPREF 的值被我之前指定的不同值覆盖(手动指定为 /mingw_32/ 而不是更可取的 /mingw_$(WIN)/) 在 C:\Users\MYUSERNAME\Documents\.R\Makevars 中,它当然在卸载 R 后仍然存在。更新此文件以指向 64 位路径解决了这个问题。

感谢 duckmayr 引导我找到答案。