R 一直在正常安装包,但突然间——我想不出我修改或卸载的任何相关内容——
当我在命令提示符下运行 R CMD check
或在 R 控制台中运行 devtools::check()
时找不到 gcc;它提供了以下错误:
* installing *source* package 'PkgName' ...
** libs
C:/MinGW/bin/gcc -I"C:/PROGRA~1/R/R-34~1.2/include" -DNDEBUG -I"d:/Compiler/gcc-4.9.3/local330/include" -O3 -Wall -std=gnu99 -mtune=core2 -c PkgName-init.c -o PkgName-init.o
C:/MinGW/bin/gcc: not found
我想让R在C:\Rtools-3.4\mingw_32\bin中找到gcc,也就是系统PATH中指定的位置; strsplit(Sys.getenv('PATH'), ';')
给出
[...]
[4] "c:\\Rtools-3.4\\bin"
[5] "c:\\Rtools-3.4\\mingw_32\\bin"
[7] "C:\\Program Files\\R\\R-3.4.2\\bin\\i386"
[8] "C:\\Program Files\\R\\R-3.4.2\\bin"
[9] "C:\\Program Files\\MiKTeX 2.9\\miktex\\bin\\x64\\"
[...]
我如何告诉 R 不要查看不存在的目录 C:\MinGW,而是遵循 PATH?
我不想在那里安装 MinGW 的第二个副本,因为这会导致其他问题。
最佳答案
R 使用 BINPREF
变量来定位可执行文件:
gcc 可执行文件的位置由 CC = $(BINPREF)gcc $(M_ARCH)
在我的例子中,BINPREF
是由 C:/Users/MYUSERNAME/Documents/.R/Makevars
设置的。删除此文件的内容会删除不正确的位置。
还值得检查文件 $RPATH/etc/i386/Makeconf
,每次新安装 R 时都会重新创建该文件。请注意该行
BINPREF ?= c:/Rtools/mingw_32/bin/
,如果它(通过 ?=
运算符)将设置 BINPREF
的值尚未设置,因为它在上面提到的 Makevars
文件中。
关于R CMD 检查不在 Rtools 目录中查找 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47076620/