2017-02-17 111 views
0

我已经在本地安装了Boost 1.63.0以及Caffe(版本rc3)。目前我正在试图编译使用CMake的一些来自Caffe代码,但我得到下面的连接错误:编译Caffe代码时未定义的Boost线程参考

/home/local/boost_1_63_0/boost/thread/pthread/once_atomic.hpp:145: 
undefined reference to `boost::thread_detail::enter_once_region(boost::once_flag&)' 

/home/local/boost_1_63_0/boost/thread/pthread/once_atomic.hpp:157: 
undefined reference to `boost::thread_detail::commit_once_region(boost::once_flag&)' 

/home/local/boost_1_63_0/boost/thread/pthread/once_atomic.hpp:153: 
undefined reference to `boost::thread_detail::rollback_once_region(boost::once_flag&)' 

libcpp_stuff_library.a(Log.cpp.o): In function `logging::get_log()': 
/home/local/boost_1_63_0/boost/thread/pthread/once_atomic.hpp:145: 
undefined reference to `boost::thread_detail::enter_once_region(boost::once_flag&)' 

/home/local/boost_1_63_0/boost/thread/pthread/once_atomic.hpp:157: 
undefined reference to `boost::thread_detail::commit_once_region(boost::once_flag&)' 

/home/local/boost_1_63_0/boost/thread/pthread/once_atomic.hpp:153: 
undefined reference to `boost::thread_detail::rollback_once_region(boost::once_flag&)' 

collect2: error: ld returned 1 exit status 

我首先想到的是,我莫名其妙地联系起来,以提高我的CMake文件中的错误的方式。眼下,在的CMakeLists.txt,我有:

set(BOOST_ROOT "/home/local/boost_1_63_0") 
find_package(Boost 1.6.3 REQUIRED COMPONENTS filesystem system thread) 

我的第二个想到的是,这已经是与并行线程,所以我连接到使用这个StackOverflow的答案在我的CMakeLists.txt并行线程:cmake and libpthread。但是,在完成此操作后,我仍然遇到同样的错误。

有没有人有关于可能是什么问题的其他建议?谢谢。

+0

你有Cmake> = 3.7吗? cf http://stackoverflow.com/q/42123509/2799037 – usr1234567

+0

是的,我有CMake版本2.8.12.2。不过好的想法。 – sealonging314

+0

这就是问题所在! – usr1234567

回答

0

当编译Caffe使用本地安装的Boost 1.63源代码构建,与CMake 3.7,我遇到了类似的问题。 Caffe 1.0CMake文件夹包含Dependencies.cmakeCaffe正在查找Boost 1.45不是Boost 1.62Boost 1.63Python 3.5.3Ubuntu 17.04 launchpad分发文件。文件夹/usr/local/lib中的本地安装文件libboost_python.solibboost_python.so.1.63.0与文件夹/usr/lib/x86_64-linux-gnulibboost_python-py35.so中的启动板分发文件名称不同。