【问题标题】:R Rcpp install error in R 3.1.0R 3.1.0 中的 R Rcpp 安装错误
【发布时间】:2015-08-23 06:16:57
【问题描述】:

我想使用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版本。

【问题讨论】:

  • g++ --version 说什么?
  • gcc (GCC) 4.9.2 20150212(红帽 4.9.2-6)
  • 应该可以。您可能还有其他问题,但我们无法从您向我们展示的内容中判断。
  • 我也尝试重新安装R,但没有用,为什么错误显示“未定义符号”?我也尝试安装旧版本,当版本为 0.10.0 或更旧时,它显示另一个错误“../inst/include/Rcpp/sugar/logical/SingleLogicalResult.h:36:2: error: recursive type ' Rcpp::sugar::conversion_to_bool_is_forbidden' undefined /usr/local/lib64/R/etc/Makeconf:137: recipe for target 'Attributes.o' failed"

标签: r gcc failed-installation


【解决方案1】:

CRAN 测试 Rcpp 就像(到目前为止)6700+ 包中的任何其他包一样。

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

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

【讨论】:

    【解决方案2】:

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

    1.如果你有root权限:

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

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

    例如我得到了像: /data/apps/R/3.1.2/bin/R

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

    然后sudoCC = XXX 行编辑文件,可能还有更多相关行。

    问题解决了!

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

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


    不过,@Dirk 可能是对的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      相关资源
      最近更新 更多