编译点云中图书馆当升压问题 [英] Boost problems when compiling Point Cloud Library

查看:156
本文介绍了编译点云中图书馆当升压问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从源代码编译在OSX 10.6.8点云库,我一直对同样的错误与Boost库运行起来:

 !使
链接CXX共享库../lib/libpcl_common.dylib
未定义的符号:
  提高::螺纹:: start_thread_noexcept(),从引用:
  提高::螺纹::线程<提高:: _双:: bind_t<无效,提振:: _ MFI :: MF0<无效,PCL :: TimeTrigger>中的boost :: _双:: list1的<提高:: _双::值< PCL :: TimeTrigger *> > > >(升压:: _双:: bind_t<无效,提振:: _ MFI :: MF0<无效,PCL :: TimeTrigger>中的boost :: _双:: list1的<提高:: _双::值< PCL :: TimeTrigger * >>>中的boost :: disable_if_c<提高:: thread_detail :: is_convertible<提高:: _双:: bind_t<无效,提振:: _ MFI :: MF0<无效,PCL :: TimeTrigger>中的boost :: _双:: list1的<提高:: _双::值< PCL :: TimeTrigger *>>>&放;,提振::详细:: thread_move_t<提高:: _双:: bind_t<无效,提振:: _ MFI :: MF0<无效,PCL :: TimeTrigger>中的boost :: _双:: list1的<提高:: _双::值< PCL :: TimeTrigger *>>>>> ::价值,提高::螺纹: :假*>在time_trigger.cpp.o ::型)
  提高::螺纹:: join_noexcept(),从引用:
      PCL :: TimeTrigger ::〜TimeTrigger()在time_trigger.cpp.o
LD:符号(S)未找到
collect2:劳工处返回1退出状态
使[2]:*** [LIB / libpcl_common.1.7.0.dylib]错误1
使[1]:*** [普通/ CMakeFiles / pcl_common.dir /全部]错误2
使:*** [全部]错误2

我已经通过CMake的选项看,和<击>他们都不引用Boost库高级设置激活后,我发现我的Boost库文件位于 / usr / lib目录/ ;例如 /usr/lib/libboost_date_time-mt.dylib

我能做些什么来解决这个问题?而我能在未来做些什么来帮助再次发生prevent类似的问题?


更新我已经重建,并从头编译提升,我仍然得到同样的错误。这似乎很奇怪,因为升压是从头开始编制和PCL过。这可能是注意到的唯一的事情是在CMake的输出,我得到这个奇怪的矛盾的消息:

   - 检查模块eigen3
- 包'eigen3'未找到
- 艾根发现(包括:在/ usr /本地/包括/ eigen3)


解决方案

这是一个提升旧版本的问题?

也许连接器正在寻找,只有在升压比你已经构建并安装了一个更新的版本中存在的功能。

仔细检查什么版本的升压由点云中图书馆推荐,你有什么版本的提振。

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:

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)

解决方案

Is this an "older version of boost" problem?

Perhaps the linker is looking for functions that only exist in a newer version of boost than the one you have built and installed.

Double check what version of boost is recommended by the Point Cloud Library, and what version of boost you have.

这篇关于编译点云中图书馆当升压问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆