系统规格:
- 操作系统 - 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 帮助文件(它不包含任何特定于 C++11 的内容,但可以显示我的问题所在)。如果我尝试运行:
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++ - 可能是这样吗?