Xcode 5.0、OSX 10.8.5和R 3.0.2的Rcpp错误

Xcode 5.0、OSX 10.8.5和R 3.0.2的Rcpp错误,xcode,r,macos,rcpp,Xcode,R,Macos,Rcpp,我只是想让Rcpp在我的Mac上运行,但我很挣扎。我已经安装了命令行工具。我已经安装了Rcpp和内联软件包。我尝试在R中运行以下脚本,并得到以下错误 fx <- cxxfunction(signature( x = "numeric" ), 'NumericVector xx(x); return wrap( std::accumulate( xx.begin(), xx.end(), 0.0));', plugin = "Rcpp",verbose=TRUE) Er

我只是想让Rcpp在我的Mac上运行,但我很挣扎。我已经安装了命令行工具。我已经安装了Rcpp和内联软件包。我尝试在R中运行以下脚本,并得到以下错误

fx <- cxxfunction(signature( x = "numeric" ),

  'NumericVector xx(x);

  return wrap( std::accumulate( xx.begin(), xx.end(), 0.0));',

  plugin = "Rcpp",verbose=TRUE)


Error in compileCode(f, code, language = language, verbose = verbose) : 
  Compilation ERROR, function(s)/method(s) not created! /bin/sh: llvm-g++-4.2: command not found
make: *** [file2e731b1c0ff8.o] Error 127

fx因为g++不再包含在Xcode 5中,所以必须将指针重新指向clang。
根据@Romain Francois的回答,您必须在~/.R/目录中创建自己的Makevars文件。Makevars的示例内容将包含:

CC=clang
CXX=clang++
CFLAGS="-mtune=native -g -O2 -Wall -pedantic -Wconversion"
CXXFLAGS="-mtune=native -g -O2 -Wall -pedantic -Wconversion"
FLIBS=-lgfortran
正如我所说,您必须更正CRAN提供的R二进制文件中硬编码的值,该文件是用oldXCode构建的,它仍然有基于g++的编译器。您(至少)有三种选择:

  • 直接编辑
    etc/Makeconf
    (在R的安装目录下)将
    CC
    CXX
    更正为
    clang
    clang++

  • 或者,以类似方式创建或编辑
    ~/.R/Makevars

  • 使用这些加载创建环境变量
    CC
    CXX

  • 它的长与短在于,
    CC
    CXX
    具有来自R编译时的硬编码值,这些值不再与系统上的值对应(使用XCode 5)。最终,R将迎头赶上,这种调整将是不必要的


    R安装和管理手册更多地说明了在给定的体系结构上应该使用哪些变量和哪些值。

    只是详细说明一下,默认情况下,目录和文件都不存在;你必须自己创造两个。同样的问题已经被问到和回答了。谢谢,我选择了选项1,看起来一切都很好。现在开始学习使用Rcpp!当然可以——而且一定要到rcpp-devel列表来提问。哦,请点击勾号符号“接受”答案。