最近开始学习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 boost-devel boost148-devel hdf5-devel atlas-devel
说明:
执行yum list boost*会显示有boost-devel和boost148-devel两个版本可用,但boost-devel版本是1.41,不满足Caffe的要求(1.47)所以安装boost148-devel,同时还要安装boost-devel否则CMake会找不到boost,参见后续的说明
然后安装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
unzip gflags-master.zip
cd gflags-master
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_FLAGS=-fPIC ..
make
sudo make install
编译glog
unzip glog-master.zip
cd glob-master
mkdir build && cd build
cmake -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_FLAGS=-fPIC ..
make
sudo make install
说明:这里用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过程中也会报错。
编译Caffe
# 从github下载Caffe源码
git clone https://github.com/blvc/caffe.git
cd caffe/
mv Makefile.config.example Makefile.config
# 如果只编译cpu版本,这里要修改Makefile.config,打开cpu_ONLY选项
mkdir build && cd build
# 如前述指定使用操作系统原生的4.4.7编译器
cmake -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc ..
make -j 24
#-j 代表多线程编译,后面的数字指开启多少个线程进行编译,我编译用的电脑是24核服务器所以设置为24,使用多线程编译可以大大加快编译速度。
说明:
在上面执行cmake生成Makefile时仍然会报错,提示找到boost版本(1.41)不能满足Caffe要求(1.47)。
这时可以用cmake-gui打开build文件夹,如下图把下面这些属性从原来的路径(/usr/lib64,/usr/include
)统统加上/boost148
(/usr/lib64/boost148,/usr/include/boost148
)
另外Centos6.5默认安装的python版本(2.6.6)也不满足Caffe的要求(2.7),生成Makefile时会有警告并报错:
如果你暂时用不到python相关的特性,可以像我一样,把下图中的BUILD_python,BUILD_python_layer
不勾选,
否则你就要去安装一个2.7以上版本的python