AI環境搭建系列3 X86平臺編譯安裝caffe 遇到的問題

編譯環境 X86 GTX1060 Ubuntu 16.04

git clone https://github.com/BVLC/caffe.git
$cp Makefile.config.example Makefile.config

在Makefile.config中修改如下內容:

94 # Whatever else you find you need goes here.
95 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
96 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/

make all
make test
make runtest
make pycaffe 編譯python接口

一直到這裏和ARM平臺編譯的方法沒有太大差異,通過對比之前講的ARM平臺和X86平臺的編譯方法,發現區別並不大,不過是多了一些編譯配置選項罷了。
而這次我們遇到了如下問題:

Q1 HDF5 library version mismatched error

錯誤提示:

Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but
linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related
settings such as 'LD_LIBRARY_PATH'.
You can, at your own risk, disable this warning by setting the environment
variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
Setting it to 2 or higher will suppress the warning messages totally.
Headers are 1.10.1, library is 1.8.16
        SUMMARY OF THE HDF5 CONFIGURATION
        =================================

General Information:
-------------------
           HDF5 Version: 1.8.16

從上面的錯誤提示分析可知,編譯和鏈接的時候用到的hdf5不是一個版本,其中一個版本是1.10.1,另外一個版本是1.8.16。
定位hdf5這個庫都哪裏有:

locate hdf5*

可知:

/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.settings

查看該文件可知,HDF5 Version: 1.8.16
而在caffe中,我們的hdf5的編譯路徑是:

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5

所以說,我們在編譯鏈接的時候,使用的是1.8.16的版本
再去看看那個1.10.1的版本,

(py3.6) user@starlitsky2010/opt//ssd-caffe$ ls -l /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10
lrwxrwxrwx 1 root root 27 46  2016 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10 -> libhdf5_serial_hl.so.10.0.2
(py3.6) user@starlitsky2010:/opt//ssd-caffe$ ls -l /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10.0.2
-rw-r--r-- 1 root root 126232 46  2016 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10.0.2

上面這個錯誤告訴我們,在配置hdf5的環境變量時,要保證編譯和鏈接以及執行時的庫的一致性。

Q2 AttributeError: ‘module’ object has no attribute ‘open’

/opt/caffe/    假設該路徑爲caffe源碼路徑
/opt/caffe/python/caffe/  這裏我們將這個路徑添加到PYTHON_PATH中,這是一個錯誤的做法
/opt/caffe/python/        這個是正確的設置路徑

也就是如果在配置PYTHONPATH時,多加了一個caffe,就會在在source activate py3.6 更新anaconda環境時報錯:

Traceback (most recent call last):
  File "/home/starlitsky2010/anaconda2/bin/conda", line 7, in <module>
    from conda.cli import main
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/conda/__init__.py", line 10, in <module>
    from .common.compat import iteritems, text_type
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/conda/common/compat.py", line 113, in <module>
    from io import open as io_open  # NOQA
  File "/opt/caffe/python/caffe/io.py", line 1, in <module>
    import numpy as np
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/numpy/__init__.py", line 142, in <module>
    from . import add_newdocs
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/numpy/lib/__init__.py", line 23, in <module>
    from .npyio import *
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/numpy/lib/npyio.py", line 14, in <module>
    from ._datasource import DataSource
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/numpy/lib/_datasource.py", line 220, in <module>
    _file_openers = _FileOpeners()
  File "/home/starlitsky2010/anaconda2/lib/python2.7/site-packages/numpy/lib/_datasource.py", line 162, in __init__
    self._file_openers = {None: io.open}
AttributeError: 'module' object has no attribute 'open'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章