2017-02-17 114 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中的啓動板分發文件名稱不同。