Ошибка при использовании Xcode 5.0 и Rcpp (средства командной строки ARE установлены)
У меня есть новый 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
Ответы
Ответ 1
Я не уверен, что вы подразумеваете под "Я загрузил компилятор 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
Ответ 2
Быстрое предположение:
-
Вы используете предварительно построенный R файл, который предоставляет Simon/CRAN.
-
R сохраняет свои параметры конфигурации со своего времени компиляции, это влияет на время выполнения.
-
Проверьте файл $R_HOME/etc/Makeconf
и посмотрите CC и CXX.
-
Как предложил Ромен, переопределите CC
и CXX
через файл ~/.R/Makevars
.
-
Повторите попытку.
Изменить: я только что подтвердил коллега, у которого есть такая же проблема на Mac OS X, которая
он просто обновляется до XCode 5 - теперь нужно переопределить CC
и CXX
, поскольку R был создан с предыдущей версией XCode.
Ответ 3
Более простым решением будет следующее.
Вы должны софт связать компилятор llvm в типе терминала:
cd /usr/bin
sudo ln -fs clang llvm-gcc-4.2
sudo ln -fs clang++ llvm-g++-4.2
Примечание. Это также работает для mex в Matlab.