使用Xcode 5.0和Rcpp时出错(安装了命令行工具)

时间:2013-10-21 20:24:57

标签: xcode r macos rcpp

我有一个新的iMac,我正在尝试使用Rcpp库运行代码,该库一直在我的旧iMac和Macbook Pro上运行而没有问题。我已经尝试了一些我似乎无法弄清问题是什么。

Xcode 5.0已下载。然后安装命令行工具。已安装R3.0.2。 我下载了一个gcc编译器。当我在终端输入gcc时 - 我得到“clang:” - 这很好,我想。

我得到的错误在下面复制。提前感谢任何想法和建议。

Error (in R console):
llvm-g++-4.2 -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include  -I"/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include"    -fPIC  -mtune=core2 -g -O2  -c SBM-Ccode.cpp -o SBM-Ccode.o 
Error in sourceCpp("SBM-Ccode.cpp") : 
  Error 1 occurred building shared library.

WARNING: The tools required to build C++ code for R were not found.

Please install Command Line Tools for XCode (or equivalent).

/bin/sh: llvm-g++-4.2: command not found
make: *** [SBM-Ccode.o] Error 127

3 个答案:

答案 0 :(得分:17)

我不确定你的意思是“我下载了一个gcc编译器”。您无需下载自己的gcc。您可以在~/.R/Makevars文件中使用默认值或使用clang ++:

CC=clang
CXX=clang++
CXXFLAGS= -O3 -pedantic

尝试devtools::has_devel时会发生什么:

> require(devtools)
> has_devel()
'/Library/Frameworks/R.framework/Resources/bin/R' --vanilla CMD SHLIB foo.c

clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include    -fPIC  -mtune=core2 -g -O2  -c foo.c -o foo.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -L/usr/local/lib -o foo.so foo.o -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
[1] TRUE

Rcpp::evalCpp

> require(Rcpp)
> evalCpp( "1+1")
[1] 2    

答案 1 :(得分:8)

快速猜测:

  1. 您正在运行Simon构建/ CRAN提供的预构建R二进制文件。

  2. R从编译时起存储其配置选项,这些选项会影响其运行时间。

  3. 通过文件$R_HOME/etc/Makeconf检查并查看CC和CXX。

  4. 根据Romain的建议,通过文件CC覆盖CXX~/.R/Makevars

  5. 再试一次。

  6. 编辑:我刚刚与一位在Mac OS X上遇到完全相同问题的同事确认过 他只是升级到XCode 5 - 现在需要覆盖CCCXX,因为R是使用以前版本的XCode构建的。

答案 2 :(得分:5)

更简单的解决方案如下。 您应该在终端类型:

中软链接llvm编译器
cd /usr/bin
sudo ln -fs clang llvm-gcc-4.2
sudo ln -fs clang++ llvm-g++-4.2

注意:这也适用于Matlab中的mex。

相关问题