编译Caffe代码时未定义的Boost线程参考

时间:2017-02-17 22:29:54

标签: boost cmake caffe

我在本地安装了Boost 1.63.0,以及Caffe(版本rc3)。我目前正在尝试使用CMake编译一些Caffe代码,但是我收到以下链接器错误:

/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文件中以错误的方式链接到Boost。现在,在CMakeLists.txt中,我有:

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

我的第二个想法是这与pthreads有关,所以我使用这个StackOverflow答案链接到我的CMakeLists.txt中的pthread:cmake and libpthread。但是,执行此操作后仍然会出现相同的错误。

有没有人对这里可能出现的问题有其他建议?谢谢。

1 个答案:

答案 0 :(得分:0)

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