定期——我想每当我更新 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 必须寻找其他地方来决定使用哪个编译器......但在哪里?
通过R CMD 检查不在 Rtools 目录中查找 gcc:
\n\nR 正在寻找C:/Users/MYUSERNAME/Documents/.R/Makevars的值BINPREF。删除该文件的内容会删除不正确的位置。
$RPATH/etc/i386/Makeconf每次新安装 R 时都会重新创建,并包含行\n BINPREF ?= c:/Rtools/mingw_32/bin/。
\n如果尚未设置,则?=运算符将设置 的值,如上面提到的文件中所示。所以替换为才会起作用,直到安装新版本的R并且文件被覆盖\xe2\x80\x93更新或卸载时,R不会修改User目录中的文件。BINPREFMakevars?==MakeconfMakevars