Ошибка компиляции при установке Stan для R и при использовании Rcpp

Мне нужно установить Rstan для класса анализа данных. Инструкции размещены здесь http://code.google.com/p/stan/wiki/RStanGettingStarted. Я использую Mac OS 10.5.8 и R 2.15.1 GUI 1.52 Leopard build 32-bit (6188). Я только что установил Xcode версии 3.1.4, компилятор Xcode C++, совместимый с leopard (для этого мне пришлось получить учетную запись разработчика Mac).

В соответствии с инструкцией по установке Stan я ввел следующий код, чтобы проверить, работает ли мой компилятор:

library(inline) 
library(Rcpp)
src <- ' 
  std::vector<std::string> s; 
  s.push_back("hello");
  s.push_back("world");
  return Rcpp::wrap(s);
'
hellofun <- cxxfunction(body = src, includes = '', plugin = 'Rcpp', verbose = FALSE)
cat(hellofun(), '\n') 

Он возвращает следующую ошибку:

Error in compileCode(f, code, language = language, verbose = verbose) :
Compilation ERROR, function(s)/method(s) not created! 
Library/Frameworks/R.framework/Versions/2.15/Resources/library/
Rcpp/include/Rcpp/internal/export.h: In function ‘void
Rcpp::internal::export_range__dispatch(SEXPREC*, InputIterator,
Rcpp::traits::r_type_primitive_tag)’:
/Library/Frameworks/R.framework/Versions/2.15/Resources/
library/Rcpp/include/Rcpp/internal/export.h:56: internal
compiler error: Bus error
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for
instructions.
make: *** [file795214e66510.o] Error 1
In addition: Warning message:
running command '/Library/Frameworks/R.framework/Resources/bin/
R CMD SHLIB file795214e66510.cpp 2>
file795214e66510.cpp.err.txt' had status 1

Когда я пытаюсь установить Стэна:

 install.packages('rstan', type = 'source') ] 

Я получаю это предупреждение: Предупреждающее сообщение: В install.packages("rstan", type = "source"): установка пакета 'rstan' имела ненулевой статус выхода

Я понятия не имею, как работает С++. Весь мой опыт кодирования связан с R, и раньше мне не требовалось компилировать его в C++. Я очень старался понять, что не так в течение последних 4 часов или около того, снова и снова просматривая эти сообщения об ошибках, но без особого успеха. Любая помощь будет принята с благодарностью, а также поможет примерно 10 другим ученикам в моем классе, у которых есть идентичные или аналогичные проблемы. Огромное спасибо.


person tom field    schedule 05.10.2012    source источник
comment
Вы не указываете, какой компилятор С++ вы установили, какую версию Rcpp, и вы также не упоминаете об установке рекомендуемого компилятора FORTRAN. Я больше не использую 10.5.8 и обновился до пакета XCode для 10.6.8. В этой среде этот код работает без ошибок, используя версию Rcpp: 0.9.14. Как правило, такие вопросы лучше отправлять в список рассылки Mac-SIG, хотя Саймона Урбанеля иногда видели в SO.   -  person IRTFM    schedule 06.10.2012
comment
Я упомянул, что компилятор C++, который я использую, — это Xcode 3.1.4. Версия Rcpp — это то, что актуально на сегодняшний день. Я ничего не знаю о рекомендуемом компиляторе FORTRAN, поэтому хотел бы узнать больше.   -  person tom field    schedule 06.10.2012
comment
У пользователей Rcpp в OS X были проблемы из-за запутанной ситуации с Apple и FSF, борющимися за авторские права gcc, но Rcpp сам по себе работает, как видно из тестов CRAN и т. Д. Вам может просто потребоваться установить компиляторы, предоставленные Саймоном для OS X и R через его сайт. Что касается Стэна, разработчики не очень-то спешат сообщить подробности, поэтому мне придется направить вас к их списку, чтобы узнать обо всех аспектах, касающихся (R)Стэна.   -  person Dirk Eddelbuettel    schedule 06.10.2012
comment
XCode — это не имя компилятора MacOS Cpp. Это имя среды разработки. На странице «Инструменты» на веб-странице att.research.com написано «Убедитесь, что во время установки выбран gcc-4.2 (по умолчанию в последних версиях Xcode). Я не знаю, считается ли версия Xcode для Leopard «последней».   -  person IRTFM    schedule 06.10.2012
comment
Я мог бы ответить на этот вопрос 15 октября здесь, не увидев вашего вопроса, хотя я работаю на компьютере с Windows: stackoverflow.com/questions/12848168/ Даже если вы работаете на Mac, возможно, вам помогут инструкции для Windows, которые я разместил по ссылке выше.   -  person Mark Miller    schedule 19.10.2012
comment
Я думаю, вы ищете: groups.google.com/forum/ ?fromgroups#!forum/stan-users   -  person Ben Bolker    schedule 20.10.2012
comment
Дирк: Когда вы говорите, что мы [разработчики Стэна] не были столь откровенны с подробностями, какие подробности вы хотели бы увидеть? RStan готов к работе с версиями компиляторов R, Rcpp и C++, рекламируемыми на странице установки RStan. В последнем выпуске Rcpp (0.10.1) не работает RcppEigen (см. dirk.eddelbuettel. com/blog/2012/11/27 ), поэтому RStan больше не работает с последней версией Rcpp. Мы удаляем зависимость RcppEigen в следующем выпуске, чтобы избежать этой проблемы в будущем.   -  person Bob Carpenter    schedule 12.12.2012


Ответы (2)


Мне кажется, это проблема с установкой вашего компилятора C++ или установки пакета Rcpp, а не проблема с пакетом rstan. Однако, если g++ вызывает у вас неразрешимую проблему, альтернативой является компилятор clang, который должен работать с Rcpp и rstan, если вы создаете $HOME/.R/Makevars с этими двумя строками.

CC = лязг

CXX=лязг++

person Ben Goodrich    schedule 21.10.2012

Как уже упоминалось в другом ответе, первый шаг — заставить Rcpp работать на вашем Mac (т. е., по крайней мере, передать пример «Hello World»).

Аналогичная проблема для Rcpp ранее: https://stat.ethz.ch/pipermail/r-sig-mac/2010-July/007574.html

Кроме того, с этой веб-страницы http://useyourloaf.com/blog/2011/03/21/compiler-options-in-xcode-gcc-or-llvm.html, кажется, что gcc 4.2 и 4.0 оба в Xcode 3.14 (не уверен как это не говорит, что это 3.14). Поэтому постарайтесь убедиться, что R использует gcc 4.2.1. Выполнение следующего в терминале покажет, какая текущая версия gcc.

$ g++ -v

person J Guo    schedule 22.10.2012