下面开始正题,caffe的安装过程。因为出问题很多,所以实际上我是尝试了python2和python3两种python的接口。下面一并放出来。
我不知道他特意加个--no-install-recommends干啥。另外,在installation主页上标明了Boost>=1.55,但是如果用上面那条命令的话,默认装上的是1.54。我现在还不能完全确定1.54是不是不行,但是为了保险起见,请使用
boost.python是啥东西呢?我理解的是boost.python是一个类似翻译器的东西,所以如果你是python3的程序,却用了python2的翻译器,那语法、定义等等各方面必然会有冲突。我记得在某篇帖子中看到过,str、int等等的定义,在两者中是不同的,所以有时会有报错信息说找不到str啦int啦之类。当时没有把没一个错误都记下来。
然后,如果我们去makefile中查找这个变量PYTHON_LIBRARIES,会发现有这么一句:
1. 安装build-essential
sudo apt-get install
build-essential
这个是一些基本的库,具体包括哪些,安装前确认时会显示,印象中有gcc等等。
2. boost安装
caffe官网给出的是sudo apt-get install --no-install-recommends libboost-all-dev我不知道他特意加个--no-install-recommends干啥。另外,在installation主页上标明了Boost>=1.55,但是如果用上面那条命令的话,默认装上的是1.54。我现在还不能完全确定1.54是不是不行,但是为了保险起见,请使用
sudo apt-get install libboost1.55-all-dev
关于boost在makefile.config中的配置,这是个坑,下面详细讲讲。
2.1. python2/Anaconda2
对于python2,只要执行完上面的安装就可以了,makefile中的配置项无需做特别设置。2.2. python3/Anaconda3
对于python3,boost安装方面没啥要留意的。需要特别注意的是makefile.config中,有一行# Uncomment to use Python 3 (default isPython 2)
PYTHON_LIBRARIES := boost_python-py34python3.5m
这一项很有迷惑性,而且我也迷糊了很久,因为相关有一项是PYTHON_LIB,一开始我以为是相同的重复项。但是如果这句stay comment的话,make caffe和pycaffe都能成功通过,但是使用时却会报错:
ImportError: /home/zero/Documents/caffe-master/python/caffe/_caffe.so:undefined symbol:
_ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
这个错误的意思是,boost版本不匹配。
boost.python是啥东西呢?我理解的是boost.python是一个类似翻译器的东西,所以如果你是python3的程序,却用了python2的翻译器,那语法、定义等等各方面必然会有冲突。我记得在某篇帖子中看到过,str、int等等的定义,在两者中是不同的,所以有时会有报错信息说找不到str啦int啦之类。当时没有把没一个错误都记下来。
然后,如果我们去makefile中查找这个变量PYTHON_LIBRARIES,会发现有这么一句:
PYTHON_LIBRARIES ?= boost_python python2.7
这句的意思是说,如果不出意外,使用的是2版本的python和boost.python。但是这里有个问题,如果把makefile.config里面那句uncomment,原来默认的是"PYTHON_LIBRARIES :=boost_python3 python3.5m",直接去掉的话会报错说找不到-lboost_python3。这里我无法解释原理,但是
去/usr/lib/x86_64-linu