Boost problems when compiling Point Cloud Library

Refresh

December 2018

Views

1.6k time

3

I am trying to compile the Point Cloud Library from source on OSX 10.6.8, and I keep running up against the same error with the Boost libraries:

! 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

I have looked through the CMake options, and none of them seem to reference the Boost library with advanced settings activated, I find that my boost library files are located in /usr/lib/; e.g. /usr/lib/libboost_date_time-mt.dylib:

enter image description here

What can I do to solve this problem? And what can I do in the future to help prevent similar problems occurring again?


UPDATE I have rebuilt and compiled Boost from scratch, and am still getting the same error. This seems very odd, as Boost is compiled from scratch and PCL is too. The only thing which could be of note is in the CMake output, I get this strange conflicting message:

-- checking for module 'eigen3'
--   package 'eigen3' not found
-- Eigen found (include: /usr/local/include/eigen3)

1 answers

0

Является ли это «старая версия повышающего» проблемы?

Возможно, компоновщик ищет функцию, которые существуют только в новой версии импульса, чем тот, который вы построили и установили.

Дважды проверьте, какая версия усиления рекомендовано точки помутнения библиотеки, и какая версия у вас есть импульс.