Ошибка Rcpp с Xcode 5.0 и OSX 10.8.5 и R 3.0.2

Я просто пытаюсь запустить Rcpp на моем Mac, но у меня проблемы. Я установил инструменты командной строки. Я установил Rcpp и встроенные пакеты. Я пытаюсь запустить следующий скрипт в R, и получаю следующую ошибку.

fx <- cxxfunction(signature( x = "numeric" ),

  'NumericVector xx(x);

  return wrap( std::accumulate( xx.begin(), xx.end(), 0.0));',

  plugin = "Rcpp",verbose=TRUE)


Error in compileCode(f, code, language = language, verbose = verbose) : 
  Compilation ERROR, function(s)/method(s) not created! /bin/sh: llvm-g++-4.2: command not found
make: *** [file2e731b1c0ff8.o] Error 127

Я понимаю, что это очень похоже на опубликованный вопрос. Но я был бы признателен за ссылку на более подробную информацию о том, где найти файл makevars.

Благодарю.

2 ответа

Решение

Как я упоминал в этом предыдущем ответе, вы должны исправить значения, жестко запрограммированные в двоичном файле R, предоставленном CRAN, который был построен со старым XCode, в котором все еще имелся компилятор на основе g++. У вас есть (как минимум) три варианта:

  1. редактировать etc/Makeconf (ниже каталога установки R), чтобы исправить CC а также CXX в clang а также clang++,

  2. Или создайте или отредактируйте ~/.R/Makevars так же.

  3. Создать переменные среды CC а также CXX с этими нагрузками.

Короче говоря, это то, что CC а также CXX иметь жестко запрограммированные значения времени компиляции R, которые больше не соответствуют значениям в вашей системе (используя XCode 5). В конце концов, R наверстает упущенное, и эта настройка будет ненужной.

В руководстве по установке и администрированию R больше сказано о том, какие переменные и какие значения следует использовать в данной архитектуре.

Поскольку g++ больше не включен в Xcode 5, вам придется перенаправить указатели на clang. На основании ответа @Romain Francois от Error, когда с Xcode 5.0 и Rcpp (инструменты командной строки ARE установлены), вам нужно будет создать свой собственный файл Makevars в каталоге ~/.R/. Пример содержимого Makevars будет содержать:

CC=clang
CXX=clang++
CFLAGS="-mtune=native -g -O2 -Wall -pedantic -Wconversion"
CXXFLAGS="-mtune=native -g -O2 -Wall -pedantic -Wconversion"
FLIBS=-lgfortran
Другие вопросы по тегам