Недавно я перешел на C++11 и Xcode 5 с инструментами командной строки в OS X 10.9.1, установил boost 1.55 с помощью Homebrew и изменил компилятор с g++ на clang++ (как упоминалось в этом посте: Ошибка при использовании Xcode 5.0 и Rcpp). Изменение компилятора исправило Rcpp при работе в R. Но у меня возникли проблемы с компиляцией примеров RInside (которые раньше работали нормально).
Я повторно загрузил RInside и разархивировал tar, перешел в каталог examples/standard и сделал make clean
и make all
. Похоже, что какой-либо STL не связан с этим каталогом. Как сделать ссылку RInside на соответствующий STL в Makefile?
Я использую STL от Netbeans в отдельном проекте, и там работает сборка с помощью clang++. Однако, когда я пробую проект RInside на Netbeans, я получаю ту же проблему: Undefined symbols for architecture x86_64
. Нужно ли где-то загружать 64-битную версию STL или RInside?
Мне все еще нужно где-то обновить/изменить конфигурацию, я загрузил неправильный пакет или это настройка в Makefile для примеров, которые нужно изменить?
Вот первый звонок от make all
:
clang++ -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include -I/Library/Frameworks/R.framework/Versions/3.0/Resources/library/RInside/include -mtune=native -g -O2 -Wall -pedantic -Wconversion -Wall -I/usr/local/include rinside_callbacks0.cpp -F/Library/Frameworks/R.framework/.. -framework R -L/Library/Frameworks/R.framework/Resources/lib -lRblas -L/Library/Frameworks/R.framework/Resources/lib -lRlapack /Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/lib/libRcpp.a /Library/Frameworks/R.framework/Versions/3.0/Resources/library/RInside/lib/libRInside.a -o rinside_callbacks0
Начало вывода:
Undefined symbols for architecture x86_64:
"std::string::find_last_of(char, unsigned long) const", referenced from:
demangler_one(char const*) in libRcpp.a(api.o)
"std::string::find(char const*, unsigned long) const", referenced from:
short_file_name(char const*) in libRcpp.a(api.o)
"std::string::size() const", referenced from:
std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libRcpp.a(api.o)
MemBuf::add(std::string const&) in libRInside.a(MemBuf.o)
"std::string::c_str() const", referenced from:
RInside::parseEval(std::string const&, SEXPREC*&) in libRInside.a(RInside.o)
SEXPREC* Rcpp::pairlist<Rcpp::Function, Rcpp::traits::named_object<SEXPREC*>, Rcpp::traits::named_object<SEXPREC*> >(Rcpp::Function const&, Rcpp::traits::named_object<SEXPREC*> const&, Rcpp::traits::named_object<SEXPREC*> const&) in libRInside.a(RInside.o)
short_file_name(char const*) in libRcpp.a(api.o)
string_to_try_error(std::string const&) in libRcpp.a(api.o)
Rcpp::RObject::AttributeProxy::set(SEXPREC*) const in libRcpp.a(api.o)
demangle(std::string const&) in libRcpp.a(api.o)
Rcpp::RObject::AttributeProxy::get() const in libRcpp.a(api.o)
И в конце сообщения об ошибках:
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
--std=c++98
в Netbeans. Я попробую понизить версию Xcode. - person Hans Roggeman   schedule 18.01.2014