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

标签 r windows gcc package

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/

相关文章:

r - 使用主成分构建分数图

c++ - 模板忽略 [[nodiscard]] 属性

c++ - gcc 检测到 "subindex out of bound"错误

c++ - boost crc 优化在 arm 上失败

r - 使用二次多项式和直线的分段回归

r - 使用 R 绘制箱线图

windows - 从批处理文件中获取错误代码

c++ - 将字符串转换为日期 : strptime identifier not found

r - 测试软件QuickCheck有R接口(interface)吗?

windows - Android 模拟器 (qemu-system-i386.exe) 的 CPU 使用率过高