HỆ THỐNG SPEC:g ++ lỗi khi cố gắng biên dịch C++ 11 với Rcpp
- OS - Mac OS X 10.6.8 (Snow Leopard)
- g ++ - Macports gcc 4.8 .1_2 + phổ
- R - 2.15.3
- Rcpp - 0.10.3
Tôi tiếp tục nhận được lỗi khi tôi đang cố gắng biên dịch các hàm sử dụng C++ 11 trong R (thông qua Rcpp) - vì lý do nào đó, g ++ không nhận dạng được tùy chọn -std=c++11
.
Ví dụ này được lấy từ các tệp trợ giúp Rcpp (nó không chứa bất kỳ điều gì cụ thể cho C++ 11, nhưng có thể cho biết vấn đề của tôi là gì). Nếu tôi cố gắng chạy:
require(Rcpp)
Sys.setenv("PKG_CXXFLAGS"="-std=c++11")
cppFunction(plugins=c("cpp11"), '
int useCpp11() {
int x = 10;
return x;
}')
tôi nhận được:
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.
Cùng lúc đó, tôi có thể biên dịch chức năng này trực tiếp từ bash - nếu mã này là trong useCpp11.cpp
tập tin, sau đó này chạy mà không có bất kỳ khiếu nại :
g++ useCpp11.cpp -std=c++11
Chắc chắn, tôi đang làm điều gì đó sai, nhưng tôi không thể tìm ra nó là gì. gcc 4.8 được đặt làm trình biên dịch mặc định trong bash, Rcpp đã hoạt động mà không có lỗi trong quá khứ. Tôi nghi ngờ rằng tôi không nói với R mà phiên bản của g ++ để sử dụng - có thể đó là trường hợp?
Nếu bạn trên một mac chỉ cần sử dụng kêu vang – aaronman
Tôi cũng cần mã của tôi để làm việc trên Windows và Linux ... – Skif
Cố gắng đi qua "-v" thay vì "-std = C++ 11" để xác nhận sự nghi ngờ của bạn rằng phiên bản gcc sai đang được chọn. –