在我开始更新gcc之前,有没有人真正尝试过这个,并且他们可以确认从源代码构建R需要更新用于使用Rcpp编译c ++代码的gcc版本(即不一定用于包创作,当然也不是CRAN有效的包裹?)
请参阅Dirk对此问题的回答,以及原始海报How to use gcc 4.8.1 with Rcpp on Windows中的后续评论。
答案 0 :(得分:6)
从源代码重建R
似乎没有必要。以下是我用于Windows 7 x64
系统的步骤,R 3.1.1
与Rtools 3.1.0.1942
一起运行。此更新对gcc
的影响尚未经过全面测试:
remove.packages("Rcpp")
和其他任何Rcpp
相关。关闭R会话。更新系统PATH
变量,按以下顺序(PATH
顶部或附近)包含这些条目:[Drive]:\R\R-3.1.1\bin\x64;[Drive]:\Rtools\bin;[Drive]:\Rtools\mingw-build\x64-4.8.1-posix-sjlj-rev5\mingw64\bin\;
第3条路径条目替换 Rtools
安装程序所包含的条目:[Drive]:\Rtools\gcc-4.6.3\bin
重启或以其他方式反映路径更改。
R
会话并运行install.packages("Rcpp")
并重复执行步骤1中删除的所有其他包。使用R 3.1.1 (2014-07-10)
与Rcpp 0.11.2
一起执行了这些步骤。最简单的方法是使用rgui.exe
进行此操作,而不是通过RStudio
之类的IDE进行此操作,原因是先前工作空间和后者的包的静默加载。
通过在system('gcc -v')
会话中运行R
来获取以下内容来测试设置:
COLLECT_GCC=F:\Rtools\MINGW-~1\X64-48~1.1-P\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=f:/rtools/mingw-~1/x64-48~1.1-p/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/4.8.1/lto-wrapper.exe
Target: x86_64-w64-mingw32
[Edited Config info]
Thread model: posix
gcc version 4.8.1 (rev5, Built by MinGW-W64 project)
要确认选择的编译器错误已不再存在gcc 4.6.3 to 4.8.0
,以及测试C++11
可用的一些新gcc 4.8.*
功能,在以下代码上运行R
的{{1}}会话保存为Rcpp::sourceCpp
文件,不应生成编译器警告或错误(而使用.cpp
完全失败):
gcc 4.6.3
答案 1 :(得分:0)
在这里,我描述了如何在Rtools中使用 GCC v8.1.0 来编译R中的源程序包。
这已在带有R v3.5.0和Rtools35的Windows 10 64位家庭版上进行了测试。
删除mingw_64
子文件夹中的所有内容。
Rtools
处于路径中:
无论安装在默认位置。请注意,它将安装在MinGW\
文件夹中。复制/剪切此MinGW\
文件夹中的内部中的任何内容。
mingw_64
内的Rtools
子文件夹,然后粘贴在步骤3中复制/剪切的所有内容。粘贴后,您将看到以下内容:
在rdatatable
控制台中通过以下几行测试您的设置,以编译R软件包R
中的C / C ++代码:
remove.packages("data.table")
install.packages("data.table", type = "source",
repos = "http://Rdatatable.github.io/data.table")
如果成功,您会发现以下内容:
它也从源头编译Rcpp
!
以博客here的形式查找相同的内容。