在 R 中为 Windows 设置 C 编译器 (CC)
Set C compiler (CC) in R for Windows
更新到 RStudio 1.2 时,我不得不从使用 32 位版本的 R 切换到 64 位版本的 R。
但是,R C 编译器命令仍在查找 32 位版本的 MinGW,这意味着我无法为 64 位安装编译包。
我已尝试卸载并重新安装 RTools 3.5 和 R 3.6.0,并且 PATH
和 BINPREF
环境变量指向适当的 64 位文件夹。尽管如此,R 在编译包含 C 源代码的包时仍在寻找 32 位 C 编译器:R CMD config CC
returns C:/Rtools/mingw_32/bin/gcc
,但我不知道如何将其更改为mingw_64
。
因此,当我 运行 devtools::install()
(或 check
、load_all
等)时,我遇到了一个错误:
* installing *source* package 'MYPACKAGE' ...
** using staged installation
** libs
sh: line 6: C:/Rtools/mingw_32/bin/nm: No such file or directory
C:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o MYPACKAGE.dll tmp.def [...] -LC:/PROGRA~1/R/R-36~1.0/bin/x64 -lR
sh: line 8: C:/Rtools/mingw_32/bin/g++: No such file or directory
no DLL was created
ERROR: compilation failed for package 'MYPACKAGE'
RStudio 弹出一个对话框提供安装 RTools,但继续安装没有帮助:CC 路径未更改。
C:\Program files\R\R-3.6.0\etc\x64\Makeconf
中指定的 BINPREF
的值被我之前指定的不同值覆盖(手动指定为 /mingw_32/
而不是更可取的 /mingw_$(WIN)/
) 在 C:\Users\MYUSERNAME\Documents\.R\Makevars
中,它当然在卸载 R 后仍然存在。更新此文件以指向 64 位路径解决了这个问题。
感谢 duckmayr 引导我找到答案。
更新到 RStudio 1.2 时,我不得不从使用 32 位版本的 R 切换到 64 位版本的 R。 但是,R C 编译器命令仍在查找 32 位版本的 MinGW,这意味着我无法为 64 位安装编译包。
我已尝试卸载并重新安装 RTools 3.5 和 R 3.6.0,并且 PATH
和 BINPREF
环境变量指向适当的 64 位文件夹。尽管如此,R 在编译包含 C 源代码的包时仍在寻找 32 位 C 编译器:R CMD config CC
returns C:/Rtools/mingw_32/bin/gcc
,但我不知道如何将其更改为mingw_64
。
因此,当我 运行 devtools::install()
(或 check
、load_all
等)时,我遇到了一个错误:
* installing *source* package 'MYPACKAGE' ...
** using staged installation
** libs
sh: line 6: C:/Rtools/mingw_32/bin/nm: No such file or directory
C:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o MYPACKAGE.dll tmp.def [...] -LC:/PROGRA~1/R/R-36~1.0/bin/x64 -lR
sh: line 8: C:/Rtools/mingw_32/bin/g++: No such file or directory
no DLL was created
ERROR: compilation failed for package 'MYPACKAGE'
RStudio 弹出一个对话框提供安装 RTools,但继续安装没有帮助:CC 路径未更改。
C:\Program files\R\R-3.6.0\etc\x64\Makeconf
中指定的 BINPREF
的值被我之前指定的不同值覆盖(手动指定为 /mingw_32/
而不是更可取的 /mingw_$(WIN)/
) 在 C:\Users\MYUSERNAME\Documents\.R\Makevars
中,它当然在卸载 R 后仍然存在。更新此文件以指向 64 位路径解决了这个问题。
感谢 duckmayr 引导我找到答案。