caffe 編譯時build_release/lib/libcaffe.so: undefined reference to `boost::cpp_regex_traits

在 caffe安裝時,出現錯誤:

build_release/lib/libcaffe.so: undefined reference to `boost::cpp_regex_traits<char>::toi(char const*&, char const*, int) const'

.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'

.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'

.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::put_mem_block(void*)'

.build_release/lib/libcaffe.so: undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'

 

按照網上的方法,改Makefile 中的LIBRARIES ,將boost_regex加入進去

還是報錯,後面查看boost版本才知道,我電腦上已經安裝了boost_1_65,版本太高,所以解決方法爲降低版本。

 

安裝步驟:

1. 下載boost安裝包

到http://www.boost.org/下載boost的安裝包,在這裏我下載boost_1_58_0.tar.gz

解壓:

tar zxvf boost_1_58_0.tar.gz

2.設置編譯器和所選庫

cd boost_1_58_0

運行bootstrap.sh腳本並設置相關參數:

./bootstrap.sh --with-libraries=all --with-toolset=gcc

--with-libraries指定編譯哪些boost庫,all的話就是全部編譯,只想編譯部分庫的話就把庫的名稱寫上,之間用 , 號分隔即可

--with-toolset指定編譯時使用哪種編譯器,Linux下使用gcc即可,如果系統中安裝了多個版本的gcc,在這裏可以指定gcc的版本,比如--with-toolset=gcc-4.4

3.編譯boost

執行以下命令開始進行boost的編譯:

./b2 --with-python include="/qp/3rd/anaconda3/include/python2.7/"

注:--with-python include="/qp/3rd/anaconda3/include/python2.7/"  一定要加上,否則後面make all時編譯不過,報錯Cannot find -ldboost_python

4.安裝boost

最後執行以下命令開始安裝boost:

./b2 install --prefix=/usr     (選這個會覆蓋原先版本)

5.添加環境變量

vim ~/.bashrc

文件末尾添加:

# Boost

export BOOST_INCLUDE=/usr /include/

export BOOST_LIB=/usr/lib

 

參考:

https://blog.csdn.net/bodybo/article/details/79962814

https://blog.csdn.net/aiyi2555/article/details/101628253/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章