2014-05-04 46 views
6

我無法讓Rcpp在Windows 8.1上工作。當我運行以下最小示例時,出現錯誤。如何讓Rcpp工作?

> library(Rcpp) 
> evalCpp("1 + 1") 
g++ -m64 -I"C:/R/R-31~1.0/include" -DNDEBUG  -I"C:/R/R-3.1.0/library/Rcpp/include" - 
I"d:/RCompile/CRANpkg/extralibs64/local/include"  -O2 -Wall -mtune=core2 -c file11dc2120723d.cpp -o 
file11dc2120723d.o g++: not found make: *** [file11dc2120723d.o] Error 127 Warning message: running 
command 'make -f "C:/R/R-31~1.0/etc/x64/Makeconf" -f "C:/R/R-31~1.0/share/make/winshlib.mk" 
SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="sourceCpp_97232.dll" WIN=64 TCLBIN=64 
OBJECTS="file11dc2120723d.o"' had status 2 
Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput, : 
    Error 1 occurred building shared library. 

兩個在我的路徑的第一條目是: PATH = C:\ Rtools \ BIN; C:\ Rtools \ GCC-4.6.3 \ BIN;

R爲安裝在目錄C:\ r \ R-3.1.0

Rtools在目錄C:\ r \ Rtools

一些額外的信息:

> library(devtools) 
> find_rtools(T) 

Scanning path... 
ls : c:\Rtools\bin\ls.exe 
Scanning registry... 
Found c:/Rtools for 3.1 
VERSION.txt 
Rtools version 3.1.0.1942 
[1] TRUE 

> has_devel() 
"C:/R/R-31~1.0/bin/x64/R" --vanilla CMD SHLIB foo.c 

gcc -m64 -I"C:/R/R-31~1.0/include" -DNDEBUG  -I"d:/RCompile/CRANpkg/extralibs64/local/include"  
O2 -Wall -std=gnu99 -mtune=core2 -c foo.c -o foo.o 
gcc: not found 
make: *** [foo.o] Error 127 
Warning message: 
running command 'make -f "C:/R/R-31~1.0/etc/x64/Makeconf" -f "C:/R/R-31~1.0/share/make/winshlib.mk" 
SHLIB="foo.dll" WIN=64 TCLBIN=64 OBJECTS="foo.o"' had status 2 
Error: Command failed (1) 

> system('g++ -v') 
Warning message: 
running command 'g++ -v' had status 127 
+3

某些東西與您的道路不符。重新閱讀手冊並重試。您需要重新啓動cmd.exe提示符和/或R/RStudio才能使更改生效。 –

+0

'system(「SET PATH」)'給了你什麼? –

+1

'system(「SET PATH」)''給我 '警告信息: 運行命令'SET PATH'的狀態爲127' – user3601715

回答

0

不確定你是否已經解決了你的問題,但看起來你沒有安裝gcc或g ++。對於Windows,您可以使用MinGW獲得這些工具。

  1. 安裝MinGW,你可以從here下載。信息主頁是here

  2. 一旦你安裝了MinGW,你可以打開'MinGW Installation Manager'並安裝'mingw32-gcc-g ++'的bin和dev。

  3. 然後,您必須更新您的PATH環境變量以包含'C:\ MinGW \ bin'和'C:\ MinGW \ msys \ 1.0 \ bin'。

  4. 重新啓動您的R會話,也不會傷害也重新安裝'Rcpp',並再次嘗試require(Rcpp); evalCpp("1 + 1")

0

我在嘗試直接調用C代碼時遇到了此問題。從功能系統()切換到system2()立即解決。

0

我得到了修復通過安裝RTools並添加RBuildTools的路徑:

Sys.setenv("PATH" = paste(Sys.getenv("PATH"), 
    "C:\\RBuildTools\\3.4\\bin", 
    "C:\\RBuildTools\\3.4\\mingw_32", 
    "C:\\RBuildTools\\3.4\\mingw_64", sep = ";")) 

我並不清楚瞭解這些事情,但@cdeterman解決方案是行不通的建設我的包,而其例子evalCpp("1 + 1")一樣。