安装和运行rcpp时出错

时间:2015-02-06 23:04:29

标签: r rcpp

我对R很新,所以对一个愚蠢的问题道歉。我正试图让rcpp运行,但我陷入了无休止的R圈,要求我重新安装RTools。

我大致遵循this blog post中的代码,虽然第一次关闭我手动安装了所有内容我随后重新安装了几次。我正在运行Windows 7,R版本3.1.2,R Studio版本0.98.1091(不是这个应该重要)和RTools 3.1。

我的控制台的编辑亮点如下:

> library(installr) 
Welcome to installr version 0.15.3...

> install.Rtools()
Loading required package: devtools
No need to install Rtools - You've got the relevant version of Rtools installed

> find_rtools()
[1] TRUE

> library(Rcpp)
> evalCpp("1+1")

Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput,  :
Error 65535 occurred building shared library.

此时弹出一个对话框说:

  

安装构建工具   为R编译C / C ++代码需要安装其他构建工具。   您想现在安装其他工具吗?

然后我被指示从头再次下载并重新安装RTools 3.1。

我已经看到这可能是PATH变量的问题,但我尝试了各种各样的事情,包括:

  1. PATH变量中没有(额外的)
  2. 包括对R(C:\ Program Files \ R \ R-3.1.2 \ bin \ x64)和RTools(C:\ RBuildTools \ 3.1 \ bin; C:\ RBuildTools \ 3.1 \ gcc-4.6)的引用。 3 \ bin;)在PATH中。一次使用RTools,一次使用R first
  3. 在PATH中只包含对RTools的引用,因为初始安装文件指示我这样做。
  4. 任何关于要尝试的事情的想法都会被感激地接受!

    修改

    根据Dirk的评论,看起来我可能对如何安装RTools有疑问。我已经按照几个博客/教程中有关如何安装RTools的说明进行操作;一切都无济于事(还有!)

    This GitHub page提供了有关如何安装和检查安装是否有效的一些说明。我已经按照所有检查(见下面的控制台副本)看起来我有一个工作安装的RTools,但当我尝试再次运行evalCPP()时,我得到的错误与之前指示我一样安装RTools。

    > Sys.getenv('PATH')
    [1] "C:\\Program Files\\R\\R-3.1.2\\bin\\x64;C:\\RTools\\bin;C:\\RTools\\gcc-4.6.3\\bin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\Enterprise Vault\\EVClient\\;C:\\Program Files (x86)\\Microsoft SQL Server\\100\\Tools\\Binn\\VSShell\\Common7\\IDE\\;C:\\Program Files (x86)\\Microsoft SQL Server\\100\\Tools\\Binn\\;C:\\Program Files\\Microsoft SQL Server\\100\\Tools\\Binn\\;C:\\Program Files (x86)\\Microsoft SQL Server\\100\\DTS\\Binn\\;C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\Common7\\IDE\\PrivateAssemblies\\;C:\\Program Files\\Microsoft SQL Server\\110\\Tools\\Binn\\;C:\\Program Files\\Microsoft\\Web Platform Installer\\;C:\\Program Files (x86)\\Microsoft SDKs\\TypeScript\\1.0\\;C:\\Program Files\\Microsoft SQL Server\\100\\DTS\\Binn\\"
    Warning message:
    printing of extremely long output is truncated
    
    > system('g++ -v')
    Using built-in specs.
    COLLECT_GCC=C:\RTools\GCC-46~1.3\bin\G__~1.EXE
    COLLECT_LTO_WRAPPER=c:/rtools/gcc-46~1.3/bin/../libexec/gcc/i686-w64-mingw32/4.6.3/lto-wrapper.exe
    Target: i686-w64-mingw32
    Configured with: /data/gannet/ripley/Sources/mingw-test3/src/gcc/configure --host=i686-w64-mingw32 --build=x86_64-linux-gnu --target=i686-w64-mingw32 --with-sysroot=/data/gannet/ripley/Sources/mingw-test3/mingw32mingw32/mingw32 --prefix=/data/gannet/ripley/Sources/mingw-test3/mingw32mingw32/mingw32 --with-gmp=/data/gannet/ripley/Sources/mingw-test3/mingw32mingw32/prereq_install --with-mpfr=/data/gannet/ripley/Sources/mingw-test3/mingw32mingw32/prereq_install --with-mpc=/data/gannet/ripley/Sources/mingw-test3/mingw32mingw32/prereq_install --disable-shared --enable-static --enable-targets=all --enable-languages=c,c++,fortran --enable-libgomp --enable-sjlj-exceptions --enable-fully-dynamic-string --disable-nls --disable-werror --enable-checking=release --disable-win32-registry --disable-rpath --disable-werror CFLAGS='-O2 -mtune=core2 -fomit-frame-pointer' LDFLAGS=
    Thread model: win32
    gcc version 4.6.3 20111208 (prerelease) (GCC) 
    
    > system('where make')
    C:\Rtools\bin\make.exe
    

    我也看过Appendix D of R Installation and Admin。我在这里看不到任何东西我除了section D.4之外还没有尝试过,这意味着我可能需要使用我安装的RTools从源代码重建rcpp。我没有时间马上做这件事,但除非人们说这条路线不值得我花时间,否则会试一试。

    编辑v2

    所以我尝试从源代码构建rcpp ......这也不起作用。我从the CRAN Rcpp package page下载了包源和Windows二进制文件。在R控制台中,我现在得到:

    > install.packages(pkgs = "C:/Rcpp_0.11.4.tar.gz", repos = NULL, contriburl = NULL, type = "source", verbose = TRUE)
    Installing package into ‘C:/Users/james.macadie/Documents/R/win-library/3.1’
    (as ‘lib’ is unspecified)
    system (cmd0): C:/PROGRA~1/R/R-31~1.2/bin/x64/R CMD INSTALL
    Warning in install.packages :
      package ‘C:/Rcpp_0.11.4.tar.gz’ is not available (for R version 3.1.2)
    

    我想我现在的问题归结为:

    • 阅读上面的所有帖子都可以告诉我如何解决问题以便它能够正常运行吗?或者,失败了......
    • 我可以运行哪些测试来检查我是否确实安装了Rtool?我在互联网上发现的一切都表明我做了:system('where make')等等。然而,无法运行evalCpp或其他rccp功能的证据表明我没有。
    • 从源码构建时我做错了什么?我应该尝试使用命令行选项吗?

    编辑v3

    使用evalCppshowOutput= TRUE运行verbose = TRUE我认为我已将错误追溯回R CMD SHLIB无效。我跟着this blog,它显示了如何直接使用命令行R.但是当我到达行R CMD SHLIB sequence_examples.c时,执行只是直接跳到下一个命令行而不做任何事情,在目录中生成任何文件或抛出任何错误。我尝试在命令行运行--help选项,但得到同样的错误:

    C:\Users\james.macadie> R --help
    
    
    Or: R CMD command args
    
    where 'command' is one of:
      INSTALL  Install add-on packages
      REMOVE   Remove add-on packages
      SHLIB    Make a DLL for use with dynload
      BATCH    Run R in batch mode
      build    Build add-on packages
      check    Check add-on packages
      Rprof    Post process R profiling files
      Rdconv   Convert Rd format to various other formats
      Rdiff    difference R output files
      Rd2pdf   Convert Rd format to PDF
      Rd2txt   Convert Rd format to pretty text
      Stangle   Extract S/R code from vignette
      Sweave    Process vignette documentation
      config   Obtain configuration information about R
      open     Open a file via Windows file associations
      texify   Process a latex file
    
    Use
      R CMD command --help
    for usage information for each command.
    
    
    C:\Users\james.macadie> R CMD SHLIB --help
    
    C:\Users\james.macadie>
    

    N.B。对于那些阅读早期代码示例的人来说,这篇文章更高,我已经改变了一些事情,因为那些代码快照:

    • 我已将R直接安装到C:\ R中。它曾经在C:\ Program Files \ R \中,但是已经建议带有空格的文件路径会导致问题
    • 我在C:\ Rtools \下引用Rtools而不是C:\ RBuildTools \

    感谢任何建议,一如既往

4 个答案:

答案 0 :(得分:6)

在尝试安装Twitter的BreakoutDetection(也是用cpp编写)时遇到同样的无限循环问题

通过执行以下

修复
Sys.setenv(PATH="%PATH%;C:/Rtools/gcc-4.6.3/bin;c:/Rtools/bin")

然后在出现以下提示时回答“否”:

“安装构建工具为R编译C / C ++代码需要安装其他构建工具。是否要立即安装其他工具?”

没有独立尝试这些行动,所以不确定是否自己会解决问题

答案 1 :(得分:0)

最后它有点像左边的东西。受following post的启发,我查看了ComSpec环境变量。不太确定如何,但我把它设置为"cmd.exe"

删除双引号,所以它说cmd.exe,然后重新启动修复所有内容。

感谢所有帮助过的人。

答案 2 :(得分:0)

我发现确保所有这些都在我的路径中修复了它。我用RStudio关闭了这个;我之后没有重新启动。

C:\Program Files\R\R-3.1.3\bin\x64
C:\Program Files\R\R-3.1.3\bin
C:\RBuildTools\3.2\bin
C:\RBuildTools\3.2\gcc-4.6.3\bin64
C:\RBuildTools\3.2\gcc-4.6.3\bin
C:\RBuildTools\3.2\gcc-4.6.3\i686-w64-mingw32\bin

这些是在我的Win7-64bit计算机上。 YMMV,我大多发布这个帖子,以确保其他人看到它时遇到同样的问题。

答案 3 :(得分:0)

我遇到了同样的问题,我通过将Rtools dir添加到env变量中来解决了这个问题:

Sys.setenv(BINPREF = "C:/Rtools/mingw_$(WIN)/bin/")