Ошибка, когда с Xcode 5.0 и Rcpp (инструменты командной строки установлены)

У меня новый iMac, и я пытаюсь запустить код, используя библиотеку Rcpp, которая без проблем работала на моем старом iMac и Macbook Pro. Я перепробовал все, что не могу понять, в чем проблема.

Xcode 5.0 загружен. Инструменты командной строки затем установлены. R3.0.2 установлен. Я скачал компилятор gcc. Когда я набираю gcc в терминале - я получаю "clang:" - это хорошо, я думаю.

Полученная ошибка копируется ниже. Заранее спасибо за любые идеи и советы.

Error (in R console):
llvm-g++-4.2 -arch x86_64 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include  -I"/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include"    -fPIC  -mtune=core2 -g -O2  -c SBM-Ccode.cpp -o SBM-Ccode.o 
Error in sourceCpp("SBM-Ccode.cpp") : 
  Error 1 occurred building shared library.

WARNING: The tools required to build C++ code for R were not found.

Please install Command Line Tools for XCode (or equivalent).

/bin/sh: llvm-g++-4.2: command not found
make: *** [SBM-Ccode.o] Error 127

3 ответа

Я не уверен, что вы подразумеваете под "я скачал компилятор gcc". Вам не нужно загружать свой собственный GCC. Вы можете использовать либо по умолчанию, либо использовать Clang++, имея что-то вроде этого в вашем ~/.R/Makevars файл:

CC=clang
CXX=clang++
CXXFLAGS= -O3 -pedantic

Что происходит, когда вы пытаетесь devtools::has_devel:

> require(devtools)
> has_devel()
'/Library/Frameworks/R.framework/Resources/bin/R' --vanilla CMD SHLIB foo.c

clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include    -fPIC  -mtune=core2 -g -O2  -c foo.c -o foo.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -L/usr/local/lib -o foo.so foo.o -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
[1] TRUE

или же Rcpp::evalCpp:

> require(Rcpp)
> evalCpp( "1+1")
[1] 2    

Быстрое предположение:

  1. Вы работаете с готовым двоичным файлом R, который предоставляет Simon / CRAN.

  2. R сохраняет параметры конфигурации во время компиляции, которые влияют на время выполнения.

  3. Проверьте через файл $R_HOME/etc/Makeconf и посмотрите на CC и CXX.

  4. Как предложил Ромен, переопределить CC а также CXX через файл ~/.R/Makevars,

  5. Попробуйте снова.

Изменить: я только что подтвердил с коллегой, у которого точно такая же проблема в Mac OS X, которую он только что обновил до XCode 5 - теперь нужно переопределить CC а также CXX как R был построен с предыдущей версией XCode.

Более простое решение будет следующим. Вы должны мягко связать компилятор llvm в терминале:

cd /usr/bin
sudo ln -fs clang llvm-gcc-4.2
sudo ln -fs clang++ llvm-g++-4.2

Примечание: это также работает для mex в Matlab.

Другие вопросы по тегам