我正在尝试在OSX 10.6.8上从源代码编译Point Cloud Library,并且我继续遇到与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
:
我该怎么做才能解决这个问题?我将来能做些什么来帮助防止类似问题再次发生?
UPDATE 我已经从头开始重建和编译Boost,但仍然遇到同样的错误。这似乎很奇怪,因为Boost是从头开始编译的,而PCL也是如此。唯一值得注意的是在CMake输出中,我得到了这个奇怪的冲突消息:
-- checking for module 'eigen3'
-- package 'eigen3' not found
-- Eigen found (include: /usr/local/include/eigen3)
答案 0 :(得分:0)
这是“旧版本的提升”问题吗?
也许链接器正在寻找仅存在于比你构建和安装的更新版本的boost中的函数。
仔细检查Point Cloud Library推荐的升级版本,以及您拥有的升级版本。