定期 - 我想每当我更新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
(使用Sys.getenv('PATH')
从R中验证)包括mingw_64之前的mingw_64。 R必须在其他地方寻找决定使用哪个编译器......但在哪里?
答案 0 :(得分:0)
如果您从devtools::install_github
开始挖掘,它将引导您完成以下功能:
devtools::install_github
devtools:::install_remotes
devtools:::try_install_remote
devtools:::install_remote
devtools:::install
devtools:::check_build_tools
devtools:::setup_rtools
devtools:::scan_path_for_rtools
当您运行以下代码时:
devtools:::scan_path_for_rtools(TRUE)
devtools:::setup_rtools(debug=TRUE)
最有可能的是,它说当前没有安装Rtools。 (是的,有点违反直觉,因为你已经将它安装在C:/ Rtools中,但可能没有在注册表中注册)
要修复它,您需要运行(实质上是Rtools is not being detected from RStudio中的解决方案)
Sys.setenv(PATH=paste0("C:\\Rtools\\bin;", Sys.getenv("PATH")))
devtools:::set_rtools_path(structure(list(path="c:/Rtools/mingw_64/bin", version=3.4), class="rtools"))
devtools:::set_rtools_path(structure(list(path="c:/Rtools/mingw_32/bin", version=3.4), class="rtools"))
如果有效,请告诉我。
答案 1 :(得分:0)
BINPREF ?= c:/Rtools/mingw_64/bin/
删除?之前=
答案 2 :(得分:0)
通过R CMD check not looking for gcc in Rtools directory:
R正在C:/Users/MYUSERNAME/Documents/.R/Makevars
中寻找BINPREF
的值。删除此文件的内容会删除错误的位置。
$RPATH/etc/i386/Makeconf
,其中包含以下行
BINPREF ?= c:/Rtools/mingw_32/bin/
。
?=
运算符将设置BINPREF
的值(如果尚未设置),如上面提到的Makevars
文件中那样。因此,用?=
替换=
将一直有效,直到安装了R的新版本并且Makeconf
文件被覆盖为止–更新或卸载R不会修改Makevars
文件在用户目录中。