4

我只是想在我的 Mac 上启动并运行 Rcpp,但我正在苦苦挣扎。我已经安装了命令行工具。我已经安装了 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

我意识到这与发布的问题非常相似。但我希望能提供有关在何处找到 makevars 文件的更多详细信息。

谢谢。

4

2 回答 2

5

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

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

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

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

总而言之,它具有来自 R 编译时CCCXX硬编码值,这些值不再对应于系统上的值(使用 XCode 5)。最终,R 会赶上来,这种调整是不必要的。

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

于 2013-10-23T19:47:01.857 回答
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
于 2013-10-23T17:19:50.920 回答