Я пытаюсь скомпилировать Tokumx (Mongodb форк с транзакциями) на Маверикс. Он компилируется некоторое время, а затем выдает сообщение об ошибке:
Linking build/darwin/64/release/mongo/mongodump
Undefined symbols for architecture x86_64:
"std::tr1::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator()(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const", referenced from:
std::tr1::_Hashtable<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::__detail::_Mod_range_hashing, std::tr1::__detail::_Default_ranged_hash, std::tr1::__detail::_Prime_rehash_policy, false, false, true>::find(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const in configuration_variable_manager.o
std::tr1::_Hashtable<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::__detail::_Mod_range_hashing, std::tr1::__detail::_Default_ranged_hash, std::tr1::__detail::_Prime_rehash_policy, false, false, true>::_M_rehash(unsigned long) in configuration_variable_manager.o
std::tr1::__detail::_Map_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> > >, true, std::tr1::_Hashtable<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, boost::function<mongo::Status (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::tr1::__detail::_Mod_range_hashing, std::tr1::__detail::_Default_ranged_hash, std::tr1::__detail::_Prime_rehash_policy, false, false, true> >::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in configuration_variable_manager.o
mongo::InitializerDependencyGraph::addInitializer(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::function<mongo::Status (mongo::InitializerContext*)> const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) in initializer_dependency_graph.o"std::__detail::_List_node_base::_M_unhook()", referenced from:
mongo::DistributedLockPinger::_distLockPingThread(mongo::ConnectionString, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long long) in distlock.o
std::list<mongo::FieldRangeSetPair, std::allocator<mongo::FieldRangeSetPair> >::_M_erase(std::_List_iterator<mongo::FieldRangeSetPair>) [clone .isra.535] in queryutil.o
mongo::OrRangeGenerator::_popOrClause(mongo::FieldRangeSet const*, mongo::Collection*, int, mongo::BSONObj const&) in queryutil.o
mongo::OrRangeGenerator::popOrClauseSingleKey() in queryutil.o
mongo::threadpool::ThreadPool::task_done(mongo::threadpool::Worker*) in thread_pool.o
mongo::threadpool::ThreadPool::~ThreadPool() in thread_pool.o
mongo::threadpool::ThreadPool::~ThreadPool() in thread_pool.o
...
ld: symbol(s) not found for architecture x86_64
Кто-нибудь точно знает, что там происходит?
Это вызвано несоответствием между стандартными заголовками библиотеки и версией библиотеки, это похоже на этот отчет http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43882.
Компиляция OSX пока не поддерживается строго для TokuMX, но я недавно работал над этим. Убедитесь, что у вас установлены последние Xcode и инструменты командной строки, и попробуйте снова скомпилировать --cc=cc --cxx="c++ -std=c++11 -stdlib=libc++"
в качестве аргументов для сыновей.
Если это не сработает, пожалуйста, также предоставьте команду, которую вы использовали, чтобы попытаться собрать, и весь предыдущий вывод, я думаю, этот вопрос лучше подходит для списка рассылки.
Других решений пока нет …