Rcpp在Xcode 5.0和OSX 10.8.5以及R 3.0.2上出现错误。

4

我只是想在我的 Mac 上运行 Rcpp,但却遇到了困难。我已经安装了命令行工具和 Rcpp 以及 inline 包。我尝试在 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

我知道这与已发布的问题非常相似。但我希望能得到更多关于寻找makevars文件的详细信息。谢谢。

同样的问题已经被问过并得到了答案。 - Dirk Eddelbuettel
2个回答

5

正如我在这个之前的回答中提到的那样,你必须更正CRAN提供的R二进制文件中硬编码的值,该文件是使用旧版本的XCode构建的,该版本仍然具有基于g ++的编译器。你至少有三个选择:

  1. 直接编辑etc/Makeconf(在R的安装目录下)以更正CCCXXclangclang++

  2. 或者,类似地创建或编辑~/.R/Makevars

  3. 创建环境变量CCCXX并使用这些加载。

长话短说,CCCXX具有来自R编译时的硬编码值,这些值不再对应您系统上的值(使用XCode 5)。最终,R将赶上并且这种调整将不再需要。

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


谢谢,我选择了选项1,看起来一切都很好。现在开始学习使用Rcpp! - Scott
当然,如果您有问题,请随时加入rcpp-devel列表。另外,请点击勾号符号接受答案。 - Dirk Eddelbuettel

3

由于Xcode 5中不再包含g++,您需要将指针重定向到clang。根据@Romain Francois在Error when with Xcode 5.0 and Rcpp (Command Line Tools ARE installed)中的回答,您需要在~/.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

1
仅仅是为了阐述,目录和文件都不是默认存在的;你必须自己创建它们。 - Kevin Ushey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接