定期 - 我想每当我更新 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
states
BINPREF ?= c:/Rtools/mingw_64/bin/
- 我的系统
PATH
(使用 R 内部验证Sys.getenv('PATH')
) 包括 mingw_64 位于 mingw_32 之前。
R 必须在其他地方寻找来决定使用哪个编译器......但是在哪里呢?
Via R CMD 检查不在 Rtools 目录中查找 gcc https://stackoverflow.com/questions/47076620/r-cmd-check-not-looking-for-gcc-in-rtools-directory/47076968#47076968:
R 正在查看C:/Users/MYUSERNAME/Documents/.R/Makevars
的价值BINPREF
。删除该文件的内容会删除不正确的位置。
$RPATH/etc/i386/Makeconf
每次新安装 R 时都会重新创建,并包含行BINPREF ?= c:/Rtools/mingw_32/bin/
.
The ?=
运算符将设置值BINPREF
如果尚未设置,就像在Makevars
上面提到的文件。所以更换?=
with =
将一直工作,直到安装新版本的 R 并且Makeconf
文件被覆盖 – 更新或卸载,R 不会修改Makevars
用户目录中的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)