我在本地安装了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。但是,执行此操作后仍然会出现相同的错误。
有没有人对这里可能出现的问题有其他建议?谢谢。
答案 0 :(得分:0)
使用本地安装的Caffe
编译Boost 1.63
,使用CMake 3.7
构建源代码时,我遇到了类似的问题。 Caffe 1.0
CMake
文件夹包含Dependencies.cmake
,Caffe
正在寻找Boost 1.45
而不是Boost 1.62
或Boost 1.63
和Python 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
中的启动板分发文件的名称不同。