在进行caffe安装时,编译时报如下错误
fatal error: hdf5.h: No such file or directory compilation terminated.
翻译这段话的原本意思是没有hdf5.h这个文件。显然caffe编译时需要这个文件,但是却找不到这个文件。
怎么来解决呢?首先,我们来找一下这个文件,采用下面的命令对hdf5.h进行查找
locate hdf5.h
查询的结果如下
/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv2/flann/hdf5.h
/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv2/hdf/hdf5.hpp
/usr/include/flann/io/hdf5.h
/usr/include/hdf5/openmpi/hdf5.h
/usr/include/hdf5/serial/hdf5.h
/usr/include/opencv2/flann/hdf5.h
/usr/include/vtk-6.2/vtk_hdf5.h
这是查到的所有和hdf5.h相关的内容。/usr/include/hdf5/serial/hdf5.h是我们需要用到的文件。
为了编译时能够找到该文件,我们对caffe文件夹下的Makefile.config文件进行修改。
找到Makefile.config文件中的包含头文件的语句,原本为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
修改为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
另外,还要对Makefile文件进行修改,将原本如下所示的代码
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m
修改为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
修改之后问题解决。
本文的资源中包含了已经修改过的Makefile和Makefile.config文件,可以作为参考。