R 使用 mingw_32 为 64 位架构编译包

ms6*_*609 5 packages r

定期——我想每当我更新 R——我在我的 64 位 Windows 机器上从源代码安装包时遇到问题。

今天我正在尝试使用devtools::install_github(). 安装在我的笔记本电脑上进行得很好,但我的台式机上没有,它可以在 下安装包*** arch - i386,但是在 下*** arch - x64,它报告错误消息

C:/PROGRA~1/R/R-34~1.4/bin/x64/R.dll:文件无法识别:文件格式无法识别

导致错误的命令是

C:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o PACKAGENAME.dll [...]

我相信错误是因为 R 正在使用 mingw_32 来尝试编译 64 位包。问题是,我在哪里可以告诉 R 使用 mingw_64?我已经检查了所有我能记得的地方:

  • R-3.4.4/etc/x64/Makeconf 状态 BINPREF ?= c:/Rtools/mingw_64/bin/
  • 我的系统PATH(在 R 中使用 验证)在Sys.getenv('PATH')mingw_32 之前包含 mingw_64。

R 必须寻找其他地方来决定使用哪个编译器......但在哪里?

ms6*_*609 3

通过R CMD 检查不在 Rtools 目录中查找 gcc

\n\n

R 正在寻找C:/Users/MYUSERNAME/Documents/.R/Makevars的值BINPREF。删除该文件的内容会删除不正确的位置。

\n\n

$RPATH/etc/i386/Makeconf每次新安装 R 时都会重新创建,并包含行\n BINPREF ?= c:/Rtools/mingw_32/bin/
\n如果尚未设置,则?=运算符将设置 的值,如上面提到的文件中所示。所以替换为才会起作用,直到安装新版本的R并且文件被覆盖\xe2\x80\x93更新或卸载时,R不会修改User目录中的文件。BINPREFMakevars?==MakeconfMakevars

\n