MAC 安装caffe 教程 排坑

第一句话 先致敬我的大神,没有他我可能还会再装几天。。。。

Mac 安装caffe 第一步就是安装 homebrew  

接下来安装caffe 依赖 

按照官网:

brew install -vd snappy leveldb gflags glog szip lmdb

接下来

 

brew tap homebrew/science

报错

Error: homebrew/science was deprecated. This tap is now empty as all its formulae were migrated

 

接下来 brew search 一下

brew search science

 会出

MAC 安装caffe 教程 排坑

接下来 安装第一个就可以了

brew install data-science-studio

接下来安装OpenCV hdf5 boost protobuf 

brew install opencv hdf5
brew install protobuf boost boost-python

这些安装好了以后呢就可以下载编译caffe了  随便找个路径:

git clone https://github.com/BVLC/caffe

 然后

cd caffe
cp Makefile.config.example Makefile.config
make all
make test
make runtest

幸运的孩子呢 一般到这里 就已经装好编译成功了。但我不是幸运的孩子 在编译的时候几乎把所有的问题都出了。。。。。

以下是排坑。

在brew 安装protobuf的时候,会默认安装的是最新版本,可是以我安装caffe的经验来看,我从来没有用过最新版本的protobuf成功过。果不其然:

#error incompatible with your Protocol Buffer headers.  Please update

所以,接下来,是把最新版本的protobuf 降成2.6.1版本。

可以参考下面这一个文章

https://blog.csdn.net/u014001964/article/details/81189710

好了 接下来 继续编译,

ld: library not found for -lboost-python
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个问题呢其实就是他找不到我们安装的boost-python在哪,我们要去找一下这个是不是真的有这个libboost_python.a

去 /usr/local/lib 里面瞅瞅,我的是没有 libboost_python.a 的,所以那他找不到,因为我安装的是boost-Python27 ,这个时候就把

libboost_python27.a 重命名为 libboost_python.a 然后就不报错了。。。。。。。

继续编译,报错:

ld: cannot link directly with /System/Library/Frameworks//vecLib.framework/vecLib for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个时候呢 我安装了openblas

brew install openblas

在Makefile.config文件里 将openblas加速打开,

MAC 安装caffe 教程 排坑

然后就好了。具体原因在Makefile里面有讲,

MAC 安装caffe 教程 排坑

继续编译,又出错:

./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory

没有hdf5.h ,所以就跑到hdf5.hpp里面 添加了一行代码 #include<hdf5.h>
继续编译,没有错误,成功。

在配置Makefile的时候

以下贴出我的Makefile.config文件 ,大家做一下参考。

## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!

# cuDNN acceleration switch (uncomment to build with cuDNN).
# USE_CUDNN := 1

# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1

# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0
# This code is taken from https://github.com/sh1r0/caffe-android-lib
# USE_HDF5 := 0

# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
#	You should not set this flag if you will be reading LMDBs with any
#	possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1

# Uncomment if you're using OpenCV 3
 OPENCV_VERSION := 3

# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
 CUSTOM_CXX := g++

# CUDA directory contains bin/ and lib/ directories that we need.
#CUDA_DIR := /usr/local/cuda
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
# CUDA_DIR := /usr

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
#CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
	#	-gencode arch=compute_20,code=sm_21 \
	#	-gencode arch=compute_30,code=sm_30 \
	#	-gencode arch=compute_35,code=sm_35 \
	#	-gencode arch=compute_50,code=sm_50 \
	#	-gencode arch=compute_52,code=sm_52 \
	#	-gencode arch=compute_60,code=sm_60 \
	#	-gencode arch=compute_61,code=sm_61 \
	#	-gencode arch=compute_61,code=compute_61

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := open
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

# Homebrew puts openblas in a directory that is not on the standard search path
BLAS_INCLUDE := $(shell brew --prefix openblas)/include
 BLAS_LIB := $(shell brew --prefix openblas)/lib

# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 \
		/usr/lib/python2.7/dist-packages/numpy/core/include \
		/usr/local/lib/python2.7/site-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
		# $(ANACONDA_HOME)/include/python2.7 \
		# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include

# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
# PYTHON_INCLUDE := /usr/include/python3.5m \
#                 /usr/lib/python3.5/dist-packages/numpy/core/include

# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib

# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib

# Uncomment to support layers written in Python (will link against Python libs)
 WITH_PYTHON_LAYER := 1

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include  /usr/local/Cellar/opencv/3.4.3/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib  /usr/local/Cellar/opencv/3.4.3/lib /usr/local/Cellar/boost-python/1.67.0/lib

# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
 #INCLUDE_DIRS += $(shell brew --prefix)/include
 #LIBRARY_DIRS += $(shell brew --prefix)/lib

# NCCL acceleration switch (uncomment to build with NCCL)
# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0)
# USE_NCCL := 1

# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
 USE_PKG_CONFIG := 1

# N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR := build
DISTRIBUTE_DIR := distribute

# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG := 1

# The ID of the GPU that 'make runtest' will use to run unit tests.
TEST_GPUID := 0

# enable pretty build (comment to see full commands)
Q ?= @

最后 再一次致敬大神!