R 3.1.0中的R Rcpp安装错误

时间:2015-06-08 16:54:35

标签: r gcc failed-installation

我想使用install.packages("Rcpp")安装Rcpp,但失败了。 错误消息:

* installing *source* package ‘Rcpp’ ...
** package ‘Rcpp’ successfully unpacked and MD5 sums checked
** libs
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include    -fpic  -g -O2  -c Date.cpp -o Date.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include    -fpic  -g -O2  -c Module.cpp -o Module.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include    -fpic  -g -O2  -c Rcpp_init.cpp -o Rcpp_init.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include    -fpic  -g -O2  -c api.cpp -o api.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include    -fpic  -g -O2  -c attributes.cpp -o attributes.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ -I/usr/local/include    -fpic  -g -O2  -c barrier.cpp -o barrier.o
g++ -shared -L/usr/local/lib64 -o Rcpp.so Date.o Module.o Rcpp_init.o api.o attributes.o barrier.o
installing to /home/sethbrin/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp/libs
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
unable to load shared object '/home/sethbrin/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp/libs/Rcpp.so':
 /home/sethbrin/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp/libs/Rcpp.so: undefined symbol: _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/sethbrin/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp’

The downloaded source packages are in
‘/tmp/Rtmp6PKB8N/downloaded_packages’
Warning message:
In install.packages("Rcpp") :
installation of package ‘Rcpp’ had non-zero exit status

然后我用

c++fit _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode

std::basic_streambuf<char, std::char_traits<char> >::seekoff(long long, std::_Ios_Seekdir, std::_Ios_Openmode)

我已经为此寻找了一些解决方案。似乎是因为gcc版本。但我不知道如何更改R用于编译Rcpp包的gcc版本。

2 个答案:

答案 0 :(得分:3)

CRAN测试Rcpp就像其他任何(现在的)6700+套餐一样。

您可以看到aggregate test report,测试设置包括两台基于Fedora的计算机:

因此,您的问题可能是本地问题,或者仅仅是因为使用较旧的设置。在这种情况下,Archive section可让您访问旧版本。

答案 1 :(得分:0)

我遇到过类似的问题。 经过一些搜索,以下是改变编译器的解决方案:

<强> 1。如果您拥有root权限:

我发现R目录中的Makeconf文件实际上设置了编译所需的所有信息。

要找到它的路径,请在命令行中回显which R

e.g。我喜欢: /data/apps/R/3.1.2/bin/R

然后文件在: /data/apps/R/3.1.2/lib64/R/etc/Makeconf

然后sudo编辑CC = XXX行上的文件,可能还有更多相对行。

问题解决了!

<强> 2。如果您只有本地用户权限。

将您自己的配置添加到~/.R/Makevars

但是,@ Dirk可能是对的。

对我来说,我最终通过将-Doff_t=__off_t添加到CFLAGS来解决了我的问题(我的问题是error: unknown type name 'off_t')。当我手动更改编译器的部分时,我得到了暂停的错误......