SPEC SPEC:
- ОС - Mac OS X 10.6.8 (Snow Leopard)
- g++ - Macports gcc 4.8.1_2 + universal
- R - 2.15.3
- Rcpp - 0.10.3
Я продолжаю получать ошибку, когда пытаюсь скомпилировать функции, которые используют С++ 11 в R (через Rcpp) - по какой-то причине g++ не распознает параметр -std=c++11
.
Этот пример взят из файлов справки Rcpp (он не содержит ничего, что характерно для С++ 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++ использовать - может ли это так?