在 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/