在使用Xcode 5.0和Rcpp时出现错误(已安装命令行工具)。

11 浏览
0 Comments

在使用Xcode 5.0和Rcpp时出现错误(已安装命令行工具)。

我有一台新的iMac,并且正在尝试使用Rcpp库运行代码,这个库在我的旧iMac和Macbook Pro上都没有问题。我尝试了所有的方法,但似乎找不到问题所在。

我已经下载了Xcode 5.0,并安装了命令行工具。R3.0.2已经安装好了。

我下载了一个gcc编译器。在终端输入gcc时,出现了"clang:",这应该是好的。

下面是我遇到的错误。提前感谢你们的任何想法和建议。

Error (在R控制台中):
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

0
0 Comments

最近在使用Xcode 5.0和Rcpp时遇到了一个错误,错误信息提示缺少命令行工具(Command Line Tools)。以下是我遇到的错误以及解决方法。

首先,我不确定你所说的“我下载了一个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    

当我执行第一个命令时,出现了以下错误:'/Library/Frameworks/R.framework/Resources/bin/R' --vanilla CMD SHLIB foo.c llvm-gcc-4.2 -arch x86_64 -std=gnu99 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -fPIC -mtune=core2 -g -O2 -c foo.c -o foo.o make: llvm-gcc-4.2: No such file or directory make: *** [foo.o] Error 1 Error: Command failed (1)

当我执行第二个命令时,出现了和之前一样的错误。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 file1818236400cd.cpp -o file1818236400cd.o

Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput, : 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: *** [file1818236400cd.o] Error 127

你是否重启了R会话?这应该对你有用;之前仍然在搜索llvm-g++-4.2是很奇怪的。事实上,clang现在是XCode 5.0中唯一的编译器,所以llvm-g++-4.2已经不可用了。这解释了之前的错误信息有些奇怪。

谢谢大家的帮助!我重新启动了,现在一切正常了。非常感谢。

0
0 Comments

问题原因:在使用Xcode 5.0和Rcpp时出现了错误,提示命令行工具已安装。

解决方法:通过软链接llvm编译器来解决。在终端中输入以下命令:

cd /usr/bin
sudo ln -fs clang llvm-gcc-4.2
sudo ln -fs clang++ llvm-g++-4.2

注意:这个方法同样适用于Matlab中的mex。

另一个类似的解决方法是:sudo ln -fs clang gcc-4.2; sudo ln -fs clang++ g++-4.2

0
0 Comments

问题原因:

可能是因为使用的是预编译的R二进制文件,而不是自己编译的版本。R存储了它的编译时配置选项,这些选项会影响它的运行时表现。通过查看文件$R_HOME/etc/Makeconf并检查CC和CXX的值来确认。

解决方法:

按照Romain的建议,在文件~/.R/Makevars中覆盖CC和CXX的值,并尝试重新运行。

补充说明:

我刚刚从一个刚升级到XCode 5的Mac OS X上遇到了同样的问题,需要覆盖CC和CXX的值,因为R是使用之前版本的XCode构建的。

对于第3点,也可以使用R CMD config CXX命令进行检查。

0