无法在Windows 7上使用Rcpp从源代码编译

时间:2016-06-15 14:59:47

标签: r rcpp

我在Windows 7虚拟机上运行R 3.3的新安装,并尝试安装我自己的使用Rcpp的R软件包。该套餐可在GitHub上找到。我安装了Rtools以及Rcppdevtools

使用devtools::install_github("pbsag/tcadr")

> devtools::install_github("pbsag/tcadr")
Downloading GitHub repo pbsag/tcadr@master
from URL https://api.github.com/repos/pbsag/tcadr/zipball/master
Installing tcadr
"C:/PROGRA~1/R/R-33~1.0/bin/x64/R" --no-site-file --no-environ --no-save  \
  --no-restore --quiet CMD INSTALL  \
  "C:/Users/Greg/AppData/Local/Temp/Rtmpwvw2qc/devtools1814572d2483/pbsag-tcadr-8ae1a82"  \
  --library="\\Mac/Home/Documents/R/win-library/3.3" --install-tests 

* installing *source* package 'tcadr' ...
** libs
c:/Rtools/mingw_64/bin/g++  -I"C:/PROGRA~1/R/R-33~1.0/include" -DNDEBUG    -I"\\Mac/Home/Documents/R/win-library/3.3/Rcpp/include" -I"d:/Compiler/gcc-4.9.3/local330/include"     -O2 -Wall  -mtune=core2 -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp:4:18: fatal error: Rcpp.h: No such file or directory
 #include <Rcpp.h>
                  ^
compilation terminated.
make: *** [RcppExports.o] Error 1
Warning: running command 'make -f "C:/PROGRA~1/R/R-33~1.0/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-33~1.0/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="tcadr.dll" WIN=64 TCLBIN=64 OBJECTS="RcppExports.o get_df_from_binary.o write_df_to_binary.o"' had status 2
ERROR: compilation failed for package 'tcadr'
* removing '\\Mac/Home/Documents/R/win-library/3.3/tcadr'
Error: Command failed (1)

克隆存储库并在Rstudio中构建:

==> Rcmd.exe INSTALL --no-multiarch --with-keep.source tcadr

* installing to library '\\Mac/Home/Documents/R/win-library/3.3'
* installing *source* package 'tcadr' ...
** libs
c:/Rtools/mingw_64/bin/g++ -shared -s -static-libgcc -o tcadr.dll tmp.def RcppExports.o get_df_from_binary.o write_df_to_binary.o -Ld:/Compiler/gcc-4.9.3/local330/lib/x64 -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-33~1.0/bin/x64 -lR
C:\Rtools\mingw_64\bin\nm.exe: RcppExports.o: File format not recognized
C:\Rtools\mingw_64\bin\nm.exe: get_df_from_binary.o: File format not recognized
C:\Rtools\mingw_64\bin\nm.exe: write_df_to_binary.o: File format not recognized
RcppExports.o: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'tcadr'
* removing '\\Mac/Home/Documents/R/win-library/3.3/tcadr'

Exited with status 1.

This question有相同的错误,但是接受的答案不适用,因为我的git存储库中没有任何编译的目标文件。

请注意,我在Windows 7或Mac上的3.2中构建此软件包没有任何问题。

会话信息

R version 3.3.0 (2016-05-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] devtools_1.11.1

loaded via a namespace (and not attached):
[1] httr_1.1.0     R6_2.1.2       tools_3.3.0    withr_1.0.1    rstudioapi_0.5
[6] curl_0.9.7     memoise_1.0.0  git2r_0.15.0   digest_0.6.9 

2 个答案:

答案 0 :(得分:4)

我最近不得不在Windows服务器上处理同样的问题。该问题与Rtools版本有关,需要v3.4而不是v3.3才能与R v3.3.0一起使用。

此外,您需要在重新安装之前从系统的PATH变量中删除旧的Rtools路径!:

c:\Rtools\binc:\Rtools\gcc-4.x-y\bin

https://cran.r-project.org/bin/windows/Rtools/

下载Rtools

编辑1

默认情况下,它看起来像Rtools 3.4。设置为在安装时包含这两个路径:

c:\Rtools\bin
c:\Rtools\mingw_32\bin

编辑2

使用RTools的事情很少,你有:

  1. R toolset
  2. Cygwin DLLs
  3. R 3.3.x + 32 bit toolchain
  4. R 3.3.x + 64bit toolchain
  5. 确保检查以上所有内容。

    接下来,尝试自己安装软件包依赖项:

    install.packages(c("Rcpp","dplyr","data.table","testthat"))
    

    从GitHub克隆回购并打开项目文件后。尝试转到RStudio中的Build标签,然后选择More - &gt; Clean and Rebuild

答案 1 :(得分:0)

我在前往解决方案的过程中做了一些事情,其中​​任何一个都可能有效,但在鸡尾酒中,我现在已安装并准备好了。

  1. 按照@dirkEddelbuettel
  2. 的建议,将R安装到C:\R\R-3.3.0
  3. 使C:\R\R-3.3.0可写,以便我可以将软件包安装到其内部库。
  4. 安装devtools的开发版本(您需要devtools才能执行此操作:install.packages("devtools"); devtools::install_github("hadley/devtools")
  5. 安装两者 32位和64位版本的Rtools,即使使用64位计算机也是如此。