我是靠谱客的博主 想人陪汽车,最近开发中收集的这篇文章主要介绍linux 虚拟机 caffe,CentOS6.5编译Caffe过程记录(系统存在多个编译器),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近开始学习Caffe,准备工作就是要把Caffe的开发环境建立起来,首先就是要能成功编译Caffe,买了一本Caffe入门书:《深度学习:21天实战Caffe》,上面有详细的Caffe编译说明。原本以为照着说明步骤一步步往下走就能一轻松完成编译,实际情况却比我想象的复杂了。

先说明一下我的电脑环境:

操作系统是Linux CentOS6.5(虚拟机),原生的gcc编译器版本是4.4.7(/usr/bin),为了编译C++11代码我又安装了支持C++11的版本5.2.0(/usr/local/bin),无Nvidia显卡。

安装Caffe的依赖库

先用yum安装Caffe的依赖库:

sudo yum install protobuf-devel leveldb-devel snappy-devel OpenCV-devel boost148-devel hdf5-devel atlas-devel numpy

说明:

执行yum list boost*会显示有boost-devel和boost148-devel两个版本可用,但boost-devel版本是1.41,不满足Caffe的要求(1.47)所以安装boost148-devel。

//不要同时安装1.41,否则有可能产生大量如下编译错误:

‘boost::shared_ptr<:error_info const std::type_info> >’到‘const boost::shared_ptr<:exception_detail::error_info_base>’的转换有歧义

然后安装gflags,glog,lmdb

sudo yum install gflags-devel glog-devel lmdb-devel

出问题了,yum list并没有找到glog…

于是我索性去github下载了gflags和glob重新编译

gflags下载地址:https://github.com/gflags/gflags

glog下载地址:https://github.com/google/glog

编译gflags

build_gflags.sh

#!/bin/sh

gflags_folder=gflags-master

if [ -d $gflags_folder ]

then

rm -fr $gflags_folder

fi

# 从 https://github.com/gflags/gflags 下载gflags源码 gflags-master.zip解压缩

unzip gflags-master.zip

pushd $gflags_folder

# 执行cmake生成Makefile

mkdir build && cd build

cmake -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_FLAGS=-fPIC ..

# 开始编译 24线程

make -j 24

sudo make install

cd ..

popd

说明:这里用CMAKE_CXX_COMPILER,CMAKE_C_COMPILER指定使用CentOS6.5原生的编译器4.4.7,不能使用C++11编译器,否则在后续编译Caffe链接阶段会报错:

Undefined reference to xxxx(…std::__cxx11::basic_string … )

同时还要在用CMAKE_CXX_FLAGS指定编译选项-fPIC否则后续编译Caffe过程中也会报错。

编译glog

build_glog.sh

#!/bin/sh

glog_folder=glog-master

if [ -d $glog_folder ]

then

rm -fr $glog_folder

fi

# 从 https://github.com/google/glog 下载glog源码 glog-master.zip解压缩

unzip glog-master.zip

pushd $glog_folder

# 执行cmake生成Makefile

mkdir build && cd build

cmake -DCMAKE_CXX_FLAGS=-fPIC ..

# 开始编译 24线程

make -j 24

sudo make install

cd ..

popd

说明:这里用CMAKE_CXX_FLAGS指定编译选项-fPIC否则后续编译Caffe过程中会报错。

编译Caffe

build_caffe.sh:

#!/bin/sh

caffe_folder=caffe-master

if [ -d $caffe_folder ]

then

rm -fr $caffe_folder

fi

# 从 https://github.com/BVLC/caffe 下载Caffe源码 caffe-master.zip解压缩

unzip caffe-master.zip

pushd $caffe_folder

# 执行cmake生成Makefile

mkdir build && cd build

cmake -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCPU_ONLY=ON -DBUILD_Python=OFF -DBUILD_python_layer=OFF -DBoost_INCLUDE_DIR=/usr/include/boost148 -DBoost_LIBRARY_DIR=/usr/lib64/boost148 ..

# 开始编译 24线程

make install -j 24

cd ..

popd

说明:

-DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++

-DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc

如前述指定使用操作系统原生的4.4.7编译器,

如果不加这个参数也能找到原生的编译器,那么这两个参数就可以不加

-DCPU_ONLY=ON

因为我的电脑上没有Nvidia显卡也没有安装cuDNN,所以这里只编译CPU版本

-DBUILD_python=OFF

-DBUILD_python_layer=OFF

不编译Python相关代码

Centos6.5默认安装的python版本(2.6.6)也不满足Caffe的要求(2.7),生成Makefile时会有警告并报错,如果你暂时用不到python相关的特性,可以像我一样把BUILD_python,BUILD_python_layer禁用,否则你就要去安装一个2.7以上版本的python,参见我的另一篇文章《CentOS6.5下为编译Caffe升级python2.6.6到2.7》

-DBoost_INCLUDE_DIR=/usr/include/boost148

-DBoost_LIBRARY_DIR=/usr/lib64/boost148

指定Boost的include和library路径

安装boost148-devel时,boost148的头文件并没有安装在/usr/include/boost,而是安装在/usr/include/boost148/boost下

同样的道理安装boost148-devel时

libboost-*.so文件(比如/usr/lib64/下libboost-filesystem-mt.so)的软连接都安装在/usr/lib64/boost148下而非默认的/usr/lib64下

所以这里要指定boost include文件和library文件路径

-j 代表多线程编译,后面的数字指开启多少个线程进行编译,我编译用的电脑是24核服务器所以设置为24,使用多线程编译可以大大加快编译速度。

Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安装 http://www.linuxidc.com/Linux/2016-07/132860.htm

Caffe配置简明教程 ( Ubuntu 14.04 / CUDA 7.5 / cuDNN 5.1 / OpenCV 3.1 )  http://www.linuxidc.com/Linux/2016-09/135016.htm

0b1331709591d260c1c78e86d0c51c18.png

最后

以上就是想人陪汽车为你收集整理的linux 虚拟机 caffe,CentOS6.5编译Caffe过程记录(系统存在多个编译器)的全部内容,希望文章能够帮你解决linux 虚拟机 caffe,CentOS6.5编译Caffe过程记录(系统存在多个编译器)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部