我在 Debian 9 Stretch 上从源代码安装 Caffe(CPU 版本)时遇到了困难。(运行时make all
遇到与 blas/liblapack 相关的链接错误)
在下面的答案中,我列出了我为了安装 Caffe 而运行的终端命令。我在新的 Virtualbox 安装的 Debian 9 中从 DVD 映像 (DVD1.iso) 对此进行了测试
地址:https://saimei.ftp.acc.umu.se/debian-cd/current/amd64/iso-dvd/debian-9.3.0-amd64-DVD-1.iso
也可以在以下网址获取:https://www.debian.org/CD/http-ftp/#stable,单击“DVD”/amd64 链接。
指定我在此安装过程中使用的 Debian 的确切版本(可能?)很重要。其他版本的安装(例如,从 CD)应该可以工作,但你可能需要安装其他我不需要安装的软件包。日期是 2017-12-13。
答案1
终端命令:请注意,这些命令在虚拟机中的全新安装中有效。它们不适用于同一操作系统的现有安装,这意味着
我忘记了在我的机器上安装了哪个版本的 Debian 发行版。(是 Stretch,但可能是 CD 安装而不是 DVD 安装。)
或者,我同时安装了一些其他东西,改变了我的操作系统,导致 Caffe 安装失败。我不知道为什么会发生这种情况。
运行以下终端命令来安装依赖项
# Update system
sudo apt update && sudo apt upgrade -y
# Install general development tools
sudo apt install -y build-essential cmake pkg-config git
# Install blas
sudo apt install -y libopenblas-*
# Install boost
sudo apt install -y libboost-all-dev
# Install open CV
sudo apt install -y libopencv-dev
# Install protobuf
sudo apt install -y protobuf-compiler libprotobuf-dev
# Install other dependencies
sudo apt install -y libgflags-dev libhdf5-dev libhdf5-serial-dev liblmdb-dev libleveldb-dev libsnappy-dev libgoogle-glog-dev
# Install python dependencies
python python-pip python-numpy python-scipy python-dev python3 python3-pip python3-numpy python3-scipy python3-dev
克隆咖啡
cd ~
git clone https://github.com/BVLC/caffe.git
cd caffe
复制 Makefile.config.example 并在构建之前更改设置
cp Makefile.config.example Makefile.config
vim Makefile.config
这是我针对仅 CPU 版本编辑后的差异输出
8c8
< # CPU_ONLY := 1
---
> CPU_ONLY := 1
51c51
< BLAS := atlas
---
> BLAS := open
95c95
< INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
---
> INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
总之,我启用了 CPU_ONLY 构建模式,将 BLAS 更改为 OpenBLAS 并添加了一个包含目录;/usr/include/hdf5/serial
。如果没有这个额外的目录,构建将失败,并出现错误“找不到 hdf5.h”。
笔记:OPENCV_VERSION := 3
如果您使用的是 OpenCV 版本 3,可能还需要取消注释该行。
安装额外的 Python 包
cd python
for req in $(cat requirements.txt); do pip install $req; done
for req in $(cat requirements.txt); do pip3 install $req; done
请注意,我为 python 和 python3 做了所有事情。有一种方法可以在构建 python 包时切换 caffe 使用的 python 版本,但我还不知道如何做到这一点,所以我只是安装两者并希望获得最好的结果。
为 hdf5 库创建符号链接
cd /usr/lib/x86_64-linux-gnu/
sudo ln -s libhdf5_serial.so.100.0.1 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.100.0.0 libhdf5_hl.so
建造
cd ~/caffe
make all
make test
make runtest
make pycaffe
make distribute
// TODO: move make distribute output to correct place
// figure out what to do with other files in distribute directory
将分发文件移动到正确的位置
cd distribute
sudo cp -r ./bin/* /bin/
sudo cp -r ./include/* /usr/include/
sudo cp -r ./lib/* /usr/lib
我不知道如何处理proto
和python
目录。