boost安装_Caffe完全安装指南 Part.2 caffe编译与安装

Part.1链接:

TchaikovskyBear:Caffe完全安装指南 Part.1 依赖库的安装​zhuanlan.zhihu.com

2. caffe的编译安装

在环境安装完毕之后,我们开始来进行caffe的源码编译,为了完全理解caffe的环境配置,本文采用CMake来进行编译配置

2.1 源码的下载

我们使用的是原始版本的caffe,github地址为https://github.com/BVLC/caffe.git

在该库下有多个分支,我们就使用主分支(master),使用以下命令将源码下载

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

2.2 Cmake编译配置流程

官网和大部分教程基本都是使用make来进行配置编译的,这种方式可读性较差,为了更好的理解caffe的配置,我们采用Cmake来进行编译。

同时笔者建议这部分内容各位要反复推敲,只有真正理解了,才能在以后遇到类似情况的时候触类旁通

  • 安装流程:
cd caffe mkdir build cd build  #为了易于阅读,这里我们使用ccmake视窗来进行配置 
ccmake ..

输入ccmake进入可视化配置后我们可以看到一个界面:

5d11e6f7615934c4ddd476dc84e2fd8f.png

可以发现他目前是空的,根据下面的操作帮助,先按c进行一次配置,它会报错,但是没有关系,这主要是让他先自动搜索一部分包,同时告诉你缺少什么,接下来就可以根据提示一点一点的补全配置。

ce75b31506d8e483b0667dbea5cfc988.png

可以发现它提示我们没有找到Protobuf,此时我们按e返回配置界面,然后按t打开进阶配置翻页找到Protobuf库的相关配置,如下图:

7b331853b38fe5a5a847d1ac9d9bac2c.png

上面会告诉我们需要配置的参数,这些值要根据依赖库安装路径(即文中的/your/install/path(你的安装路径),笔者的路径为/home/liuky/venvs/local_caffe)进行填写,填写完成后形如:

Protobuf_INCLUDE_DIR             /your/install/path/include
Protobuf_LIBRARY_DEBUG           /your/install/path/lib/libprotobuf.so
Protobuf_LIBRARY_RELEASE         /your/install/path/lib/libprotobuf.so
Protobuf_LITE_LIBRARY_DEBUG      /your/install/path/lib/libprotobuf-lite.so
Protobuf_LITE_LIBRARY_RELEASE    /your/install/path/lib/libprotobuf-lite.so
Protobuf_PROTOC_EXECUTABLE       /your/install/path/bin/protoc
Protobuf_PROTOC_LIBRARY_DEBUG    /your/install/path/lib/libprotoc.so
Protobuf_PROTOC_LIBRARY_RELEAS   /your/install/path/lib/libprotoc.so

记住要将文中的/your/install/path替换为你自己的环境安装路径。

经过上面的操作,boost库的配置就完成了,我们继续按c进行一次cmake配置:

18e0a45a23082bede4e56b20e3a4ef88.png

你就会发现报错的信息不一样了,它不再提示找不到Protobuf,而是找不到lmdb了,经过多次反复以上操作,我们就可以逐步将cmake文件配置完成。

2.3 配置信息

这里给出各个模块的配置参数以供参考,请注意替换环境目录。

要注意的是,对于下文中没有提到的参数,都可以不必太过关心,这些参数要么是自动搜索获得,要么是不需要配置,留空或者NOTFOUND也没有影响的。

Protobuf

 Protobuf_INCLUDE_DIR             /home/liuky/venvs/local_caffe/include
 Protobuf_LIBRARY_DEBUG           /home/liuky/venvs/local_caffe/lib/libprotobuf.so
 Protobuf_LIBRARY_RELEASE         /home/liuky/venvs/local_caffe/lib/libprotobuf.so
 Protobuf_LITE_LIBRARY_DEBUG      /home/liuky/venvs/local_caffe/lib/libprotobuf-lite.so
 Protobuf_LITE_LIBRARY_RELEASE    /home/liuky/venvs/local_caffe/lib/libprotobuf-lite.so
 Protobuf_PROTOC_EXECUTABLE       /home/liuky/venvs/local_caffe/bin/protoc
 Protobuf_PROTOC_LIBRARY_DEBUG    /home/liuky/venvs/local_caffe/lib/libprotoc.so
 Protobuf_PROTOC_LIBRARY_RELEAS   /home/liuky/venvs/local_caffe/lib/libprotoc.so

boost

因为我们安装boost库的时候会自带cmake配置信息,所以boost的配置大部分会自动完成

boost_filesystem_DIR             /home/liuky/venvs/local_caffe/lib/cmake/boost_filesystem-1.72.0
boost_headers_DIR                /home/liuky/venvs/local_caffe/lib/cmake/boost_headers-1.72.0
boost_system_DIR                 /home/liuky/venvs/local_caffe/lib/cmake/boost_system-1.72.0
boost_thread_DIR                 /home/liuky/venvs/local_caffe/lib/cmake/boost_thread-1.72.0
boost_python_DIR                 /home/liuky/venvs/local_caffe/lib/cmake/boost_python-1.72.0
Boost_DIR                        /home/liuky/venvs/local_caffe/lib/cmake/Boost-1.72.0

HDF5

HDF5的配置中使用了部分系统预装好的库,主要为libm,librt,libdl,libpthread这几个,这些库cmake会自动搜索到。但是要注意的是大部分系统也预装了libz这个库,而我们使用的libz是自己编译的,因此要注意修改。

HDF5_CXX_COMPILER_EXECUTABLE     /home/liuky/venvs/local_caffe/bin/h5c++
HDF5_CXX_LIBRARY_dl              /usr/lib64/libdl.so
HDF5_CXX_LIBRARY_hdf5            /home/liuky/venvs/local_caffe/lib/libhdf5.so
HDF5_CXX_LIBRARY_hdf5_cpp        /home/liuky/venvs/local_caffe/lib/libhdf5_cpp.so
HDF5_CXX_LIBRARY_hdf5_hl         /home/liuky/venvs/local_caffe/lib/libhdf5_hl.so
HDF5_CXX_LIBRARY_hdf5_hl_cpp     /home/liuky/venvs/local_caffe/lib/libhdf5_hl_cpp.so
HDF5_CXX_LIBRARY_m               /usr/lib64/libm.so
HDF5_CXX_LIBRARY_pthread         /usr/lib64/libpthread.so
HDF5_CXX_LIBRARY_rt              /usr/lib64/librt.so
HDF5_CXX_LIBRARY_z               /home/liuky/venvs/local_caffe/lib/libz.so
HDF5_C_COMPILER_EXECUTABLE       /home/liuky/venvs/local_caffe/bin/h5cc
HDF5_C_LIBRARY_dl                /usr/lib64/libdl.so
HDF5_C_LIBRARY_hdf5              /home/liuky/venvs/local_caffe/lib/libhdf5.so
HDF5_C_LIBRARY_hdf5_hl           /home/liuky/venvs/local_caffe/lib/libhdf5_hl.so
HDF5_C_LIBRARY_m                 /usr/lib64/libm.so
HDF5_C_LIBRARY_pthread           /usr/lib64/libpthread.so
HDF5_C_LIBRARY_rt                /usr/lib64/librt.so
HDF5_C_LIBRARY_z                 /home/liuky/venvs/local_caffe/lib/libz.so
HDF5_DIFF_EXECUTABLE             /home/liuky/venvs/local_caffe/bin/h5diff

GFLAG&GLOG

GFLAGS_INCLUDE_DIR               /home/liuky/venvs/local_caffe/include
GFLAGS_LIBRARY                   /home/liuky/venvs/local_caffe/lib/libgflags.so
GLOG_INCLUDE_DIR                 /home/liuky/venvs/local_caffe/include
GLOG_LIBRARY                     /home/liuky/venvs/local_caffe/lib/libglog.so

LMDB&LevelDB

LMDB_INCLUDE_DIR                 /home/liuky/venvs/local_caffe/include
LMDB_LIBRARIES                   /home/liuky/venvs/local_caffe/lib/liblmdb.so
LevelDB_INCLUDE                  /home/liuky/venvs/local_caffe/include
LevelDB_LIBRARY                  /home/liuky/venvs/local_caffe/lib/libleveldb.so

OpenBLAS

OpenBLAS_INCLUDE_DIR             /home/liuky/venvs/local_caffe/include 
OpenBLAS_LIB                     /home/liuky/venvs/local_caffe/lib/libopenblas.so

OpenCV

OpenCV_DIR                       /home/liuky/venvs/local_caffe/share/OpenCV

Snappy

Snappy_INCLUDE_DIR               /home/liuky/venvs/local_caffe/include 
Snappy_LIBRARIES                 /home/liuky/venvs/local_caffe/lib64/libsnappy.so

Python

笔者这里使用的是anaconda下的python

PYTHON_EXECUTABLE                /home/liuky/soft/anaconda3/bin/python3
PYTHON_INCLUDE_DIR               /home/liuky/soft/anaconda3/include/python3.7m
PYTHON_LIBRARY                   /home/liuky/soft/anaconda3/lib/libpython3.7m.so
PYTHON_LIBRARY_DEBUG             PYTHON_LIBRARY_DEBUG-NOTFOUND
python_version                   3

cuda

cuda配置cmake全部都可以自动搜索到,不需要手动修改,自己配置的时候可以直接跳过

CUDA_64_BIT_DEVICE_CODE          ON
CUDA_ARCH_NAME                   Auto
CUDA_ATTACH_VS_BUILD_RULE_TO_C   ON
CUDA_BUILD_CUBIN                 OFF
CUDA_BUILD_EMULATION             OFF
CUDA_CUDART_LIBRARY              /usr/local/cuda/lib64/libcudart.so
CUDA_CUDA_LIBRARY                /usr/lib64/libcuda.so
CUDA_GENERATED_OUTPUT_DIR
CUDA_HOST_COMPILATION_CPP        ON
CUDA_HOST_COMPILER               /usr/bin/cc
CUDA_NVCC_EXECUTABLE             /usr/local/cuda/bin/nvcc
CUDA_NVCC_FLAGS
CUDA_NVCC_FLAGS_DEBUG
CUDA_NVCC_FLAGS_MINSIZEREL
CUDA_NVCC_FLAGS_RELEASE
CUDA_NVCC_FLAGS_RELWITHDEBINFO
CUDA_PROPAGATE_HOST_FLAGS        ON
CUDA_SDK_ROOT_DIR                CUDA_SDK_ROOT_DIR-NOTFOUND
CUDA_SEPARABLE_COMPILATION       OFF
CUDA_TOOLKIT_INCLUDE             /usr/local/cuda/include
CUDA_TOOLKIT_ROOT_DIR            /usr/local/cuda
CUDA_USE_STATIC_CUDA_RUNTIME     ON
CUDA_VERBOSE_BUILD               OFF
CUDA_VERSION                     10.1
CUDA_cublas_LIBRARY              /usr/lib64/libcublas.so
CUDA_cudadevrt_LIBRARY           /usr/local/cuda/lib64/libcudadevrt.a
CUDA_cudart_static_LIBRARY       /usr/local/cuda/lib64/libcudart_static.a
CUDA_cufft_LIBRARY               /usr/local/cuda/lib64/libcufft.so
CUDA_cupti_LIBRARY               /usr/local/cuda/extras/CUPTI/lib64/libcupti.so
CUDA_curand_LIBRARY              /usr/local/cuda/lib64/libcurand.so
CUDA_cusolver_LIBRARY            /usr/local/cuda/lib64/libcusolver.so
CUDA_cusparse_LIBRARY            /usr/local/cuda/lib64/libcusparse.so
CUDA_nppc_LIBRARY                /usr/local/cuda/lib64/libnppc.so
CUDA_nppial_LIBRARY              /usr/local/cuda/lib64/libnppial.so
CUDA_nppicc_LIBRARY              /usr/local/cuda/lib64/libnppicc.so
CUDA_nppicom_LIBRARY             /usr/local/cuda/lib64/libnppicom.so
CUDA_nppidei_LIBRARY             /usr/local/cuda/lib64/libnppidei.so
CUDA_nppif_LIBRARY               /usr/local/cuda/lib64/libnppif.so
CUDA_nppig_LIBRARY               /usr/local/cuda/lib64/libnppig.so
CUDA_nppim_LIBRARY               /usr/local/cuda/lib64/libnppim.so
CUDA_nppist_LIBRARY              /usr/local/cuda/lib64/libnppist.so
CUDA_nppisu_LIBRARY              /usr/local/cuda/lib64/libnppisu.so
CUDA_nppitc_LIBRARY              /usr/local/cuda/lib64/libnppitc.so
CUDA_npps_LIBRARY                /usr/local/cuda/lib64/libnpps.so
CUDA_rt_LIBRARY                  /usr/lib64/librt.so
CUDNN_INCLUDE                    /usr/local/cuda/include
CUDNN_LIBRARY                    /usr/local/cuda/lib64/libcudnn.so
CUDNN_ROOT

USE

配置完各个依赖库后,还需要勾选是否使用它

USE_CUDNN                        ON
USE_HDF5                         ON
USE_LEVELDB                      ON
USE_LMDB                         ON
USE_NCCL                         OFF
USE_OPENCV                       ON
USE_OPENMP                       OFF
USE_PROJECT_FOLDERS              OFF

2.4 编译,安装与测试

经过上面的设置后,caffe的配置就已经全部完成了,接下来就可以开始进行编译:

# 记得进入编译文件夹 
cd build 
make -j4 
make install

如果没有报错的话,此时caffe就已经安装完成了,但是这不代表caffe能够正常运行,我们还需要再进行一下测试:

make runtest

输入runtest后,caffe会开始测试,这个时间比较漫长,如果测试能够全部通过:

371ef90029db39d3c727aa1a498919c1.png

最后一行会显示PASSED,此时就表示caffe已经完全安装完毕并且可以正常使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值