系统规格:
>操作系统 – Mac OS X 10.6.8(雪豹)
g – Macports gcc 4.8.1_2通用
> R – 2.15.3
> Rcpp – 0.10.3
当我尝试编译在R(通过Rcpp)中使用C 11的函数时,我继续收到错误 – 由于某些原因,g不会识别-std = c 11选项.
这个例子取自Rcpp帮助文件(它不包含任何特定于C11的内容,但可以显示我的问题).如果我尝试运行:
require( Rcpp ) Sys.setenv( "PKG_CXXFLAGS"="-std=c++11" ) cppFunction(plugins=c("cpp11"),' int useCpp11() { int x = 10; return x; }')
我得到:
cc1plus: error: unrecognized command line option "-std=c++11" make: *** [file61239328ae6.o] Error 1 g++ -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include/x86_64 -DNDEBUG -I/usr/local/include -I"/Library/Frameworks/R.framework/Versions/2.15/Resources/library/Rcpp/include" -std=c++11 -fPIC -g -O2 -c file61239328ae6.cpp -o file61239328ae6.o Error in sourceCpp(code = code,env = env,rebuild = rebuild,showOutput = showOutput,: Error 1 occurred building shared library.
同时,我可以直接从bash编译这个函数 – 如果这个代码在useCpp11.cpp文件中,那么这个运行没有任何投诉:
g++ useCpp11.cpp -std=c++11
当然,我做错了事情,但是我无法解决这个问题. gcc 4.8在bash中设置为默认编译器,Rcpp过去一直工作无故障.我怀疑我没有告诉R哪个版本的g可以使用 – 可能是这样吗?