Я пытаюсь скомпилировать библиотеку Point Cloud из исходного кода в OSX 10.6.8, и продолжаю сталкиваться с той же ошибкой с библиотеками Boost:
! make
Linking CXX shared library ../lib/libpcl_common.dylib
Undefined symbols:
"boost::thread::start_thread_noexcept()", referenced from:
boost::thread::thread<boost::_bi::bind_t<void, boost::_mfi::mf0<void,
pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > > >(boost::_bi::bind_t<void, boost::_mfi::mf0<void, pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > >, boost::disable_if_c<boost::thread_detail::is_convertible<boost::_bi::bind_t<void, boost::_mfi::mf0<void, pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > >&, boost::detail::thread_move_t<boost::_bi::bind_t<void, boost::_mfi::mf0<void, pcl::TimeTrigger>, boost::_bi::list1<boost::_bi::value<pcl::TimeTrigger*> > > > >::value, boost::thread::dummy*>::type)in time_trigger.cpp.o
"boost::thread::join_noexcept()", referenced from:
pcl::TimeTrigger::~TimeTrigger()in time_trigger.cpp.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [lib/libpcl_common.1.7.0.dylib] Error 1
make[1]: *** [common/CMakeFiles/pcl_common.dir/all] Error 2
make: *** [all] Error 2
Я просмотрел параметры CMake, и ни один из них, похоже, не ссылается на библиотеку Boost с активированными расширенными настройками, я обнаружил, что файлы моей библиотеки boost находятся в /usr/lib/
; например /usr/lib/libboost_date_time-mt.dylib
:
Что я могу сделать, чтобы решить эту проблему? И что я могу сделать в будущем, чтобы предотвратить повторение подобных проблем?
ОБНОВЛЕНИЕ Я перестроил и скомпилировал Boost с нуля, но все еще получаю ту же ошибку. Это кажется очень странным, поскольку Boost компилируется с нуля, как и PCL. Единственное, на что следует обратить внимание, это в выводе CMake, я получаю это странное противоречивое сообщение:
-- checking for module 'eigen3'
-- package 'eigen3' not found
-- Eigen found (include: /usr/local/include/eigen3)
/usr/lib
у меня есть, среди прочего,libboost_thread-mt.a
иlibboost_thread-mt.dylib
. Файлdylib
упоминается в CMake (см. Отредактированный вопрос). Сейчас я переустанавливаю Boost, чтобы посмотреть, улучшит ли это ситуацию. - person Bill Cheatham   schedule 09.05.2013