1 安装第三方库
先编译安装:
用 apt 安装下列库:
sudo apt-get install libprotobuf-dev
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install gfortran
注意:
- 若后面编译 caffe 时还存在缺少库的问题,最好编译安装对应库。leveldb 编译安装可能会遇到问题,参考这里。
- 若提示相关的库不能共享时,需要重新编译库,编译前执行:
$ export CFLAGS="-fPIC" $ export CXXFLAGS="-fPIC"
2 安装CUDA
3 编译安装 caffe
3.1 下载caffe:
wget https://github.com/BVLC/caffe/archive/master.zip
解压即可。
3.2 修改 Makefile.config 配置
cp Makefile.config.example Makefile.config
vim Makefile.config
- 使用 cudnn
将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
- 使用 opencv
将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
- 增加库的头文件路径和库路径
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
# 添加的路径根据实际情况而定,若是自己编译的三方库,就填安装的路径
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
- 根据情况删除 CUDA_ARCH 的相关项,本次实验把 20、21 两项删除了
3.3 修改 Makefile
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
3.4 更换 gcc 版本
caffe 2016年就不再维护了,gcc的版本不能大于 7,在 ubuntu20 中默认版本就是 gcc-9,需要降低版本:
sudo update
sudo apt install gcc-7
sudo apt install g++-7
cd /usr/bin
ln -sf gcc-7 gcc
ln -sf g++-7 g++
以上是用 apt 安装,若用 gcc 源码安装,参考这里。
3.5 编译
make all -j8
make test -j8
#make runtest -j8