ubuntu編譯caffe時make all不通過的一些問題總結

本文根據我編譯時出現的一些錯誤,參考了swfa1的csdn博客《caffe編譯中的python問題》http://www.th7.cn/Program/Python/201609/967571.shtml 和ThinkingMan新浪博客《Ubuntu14.04編譯caffe問題記錄》http://blog.sina.com.cn/s/blog_721a75e50102wfig.html,做的一些記錄,以便以后備用。

系統環境做一下說明:

ubuntu14.04LTS,CUDA 8.0, ?cudnn 5.0, caffe :官方發布的caffe

(后來實驗配置環境多了,發現問題大同小異,上述系統版本號是我第一次配置時的系統信息,不一定必須遵循,只要你的Ubuntu 和cuda,cudnn 版本號對應就行,這個對應關系網上可以查到,在此就不復制了)。

錯誤1:

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libopencv_highgui.so: undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'

collect2: error: ld returned 1 exit status

make: *** [.build_release/tools/convert_imageset.bin] Error 1

錯誤描述:如上圖顯示,未定義的引用“TIFFReadRGBAStrip@LIBTIFF_4.0”,說明是libtiff庫未指明,

解決辦法:執行下面命令操作查找對應庫路徑,并添加

$ldconfig -p|grep libtiff #這個指令是查找庫索引

下圖是我查找到的鏈接關系

$ export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu/ #這個指令是將路徑添加至配置文件中

然后再編譯make all,就可以繼續進行下面測試了。

$make clean # 清理上次編譯錯誤記錄

$make all -j8

問題2:

/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory # include^

compilation terminated.

make: *** [.build_release/src/caffe/layer_factory.o] Error 1

make: *** Waiting for unfinished jobs....


錯誤描述:這個是因為cplus文件索引路徑錯誤問題,我安裝caffe是用的是anaconda2,一些路徑出了問題,將python對應路徑添加進去就好

解決辦法:如下

$export CPLUS_INCLUDE_PATH=/usr/include/python2.7

然后再編譯make all,就可以繼續進行下面測試了。

$make clean# 清理上次編譯錯誤記錄

$make all -j8


2017/10更新:

問題描述:前一段時間服務器又歇菜了,項目組的同學重裝系統后,發現正常步驟安裝caffe后,老是找不到pyconfig.h文件,也就是上面這個問題。可是檢查的時候路徑,環境變量什么都沒問題。后來又把caffe卸了重裝好幾次,還是這個問題。今早又重新裝載的時候,git clone 時,報下面這個錯:

以前一直以為是權限問題,沒想太多,直接指令前面加sudo執行了。后來查了一下這個問題,在這篇博客(http://blog.csdn.net/superior_yong/article/details/62041526)中提到了這個問題,并給出了解決方案。如下圖。

問題分析:好吧,那我查看一下我的根目錄下的.config文件夾,發現我的這個文件加的所有者是root。可能是這個原因,跨權限調用文件的原因,造成后面的一系列編譯錯誤吧。

解決辦法:

參照這篇博客(http://www.linuxidc.com/Linux/2015-03/114695.htm),我把文件夾所有者改了回來,編譯發現沒有錯了,都通過了。

3.錯誤

ImportError: No module named Cython.Distutils

解決辦法:

安裝Cython

$sudo apt-get install cython

4錯誤

make pycaffe后,還有一些庫找不到,我自己測試,這個問題也適用于基于CAFFE 平臺的的其他神經網絡,例如py-faster-rcnn和py-R-FCN等。

(參考這篇博客http://www.cnblogs.com/venus024/p/5664103.html)

解決辦法:

$cd caffe/python

$for req in $(cat requirements.txt); do pip install $req; done

caffe/python/requirements.txt這個文件記錄caffe的Python接口所需要的所有函數庫,執行上面語句便可依次檢查是否所需模塊都安裝,有的話自動跳過或升級,沒有的話自動安裝。

5錯誤

由于服務器桌面系統經常崩盤,找售后他們又重裝了系統,所以所有的環境得重新配置。執行make all 時,發現了下面的錯誤。經排查發現是cudnn安裝配置錯誤。


查到,博客http://blog.csdn.net/u011070171/article/details/52292680,給的解釋說,這是因為當前版本的caffe的cudnn實現與系統所安裝的cudnn的版本不一致引起的。上官網查了了一下caffe對cuda相關要求,顯示如下:


以上判斷是caffe版本過舊,cudnn版本太新。下面就對癥下藥:

解決辦法1:(博客中給的辦法)

1.將./include/caffe/util/cudnn.hpp 換成最新版的caffe里的cudnn的實現,即相應的cudnn.hpp.

2. 將./include/caffe/layers里的,所有以cudnn開頭的文件,例如cudnn_conv_layer.hpp。? 都替換成最新版的caffe里的相應的同名文件。

3.將./src/caffe/layer里的,所有以cudnn開頭的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。

都替換成最新版的caffe里的相應的同名文件。

rbgirshick的py-faster-rcnn實現,因為其cudnn實現為舊版本的實現,所有出現了以上問題.


解決辦法2:(降低cudnn版本)

將之前安裝的/usr/local/cuda-8.0/l路徑下的cudnn的文件刪除,按照網上教程重新安裝v5.0版,文件關聯一下,就好

解決辦法3:(更換新版本的caffe)

去github上下載新版的caffe,把caffe重新按照官方教程安裝配置一遍。

6錯誤

運行make runtest,一直報錯

Checkfailed:status== CUDNN_STATUS_SUCCESS (3vs.0)? CUDNN_STATUS_BAD_PARAM

錯誤描述:按照http://www.cnblogs.com/penguinliong/p/6351215.html這篇博客說是GPU被占用,可是我運行$nvidia-smi查看顯示,說沒有進程調用GPU,經排查還是cudnn的安裝問題,因為服務器是多人在使用,被別人裝了兩個版本的cudnn。

解決辦法:刪掉一個cudnn,重新安裝配置連接,然后再編譯make all,就可以繼續進行下面測試了。

$make clean# 清理上次編譯錯誤記錄

$make all -j8

7錯誤

今天在給師姐裝caffe時,遇到了Python接口無法調用的問題,具體問題描述如下:

按照正常安裝步驟,執行$make all,$make test , $make runtest ,$make pycaffe都正常。但是$Python打開Python編譯器后,執行import caffe調用caffe的Python接口是出現錯誤:No module named _caffe,網上查找大部分解釋說是 make pycaffe 編譯出錯,沒有正確生成Python腳本文件。

解決辦法:

$make clean# 清理上次編譯錯誤記錄

sudo 超級用戶權限重新執行上面make all ,make pycaffe指令。

需要注意的是,如果錯誤是 no module named caffe ,可能是你的caffe路徑配置錯誤,執行下面命令,將caffe/python/環境變量路徑添加.bashrc文件中。

$sudo vim ~/.bashrc #打開.bashrc文件

在文件最后添加下面指令

export PYTHONPATH=/home/(你的用戶名)/caffe(你的caffe安裝目錄)/python:$PYTHONPATH#這里也可以使用~/caffe/pyhon相對路徑

關閉文件, 輸入下面指令,是環境變量生效,

$source ~/.bashrc


然后,在Python編譯器中import caffe,測試應該可以正常調用caffe。

8錯誤

還是上面的接口問題,按照錯誤7解決no module問題后,再次測試出現新的錯誤如下:


錯誤描述:如上圖最后一行所示,顯示運行時錯誤,網上找問題說是numpy錯誤。

解決辦法:更新numpy模塊,執行下面語句更新。

$sudo pip install numpy --upgrade

9錯誤

環境配置好后,做手寫體網絡測試,執行 (在caffe安裝目錄下)

$sudo examples/mnist/train_lenet.sh

出現如下錯誤


問題描述:出現這種錯誤是由于訓練數據沒有準備好。

解決辦法:(以下命令都在caffe安裝目錄下執行)

$.data/mnist/get_mnist.sh#準備數據

$.examples/mnist/create_mnist.sh#生成caffe指定數lmdb據格式

$.examples/mnist/train_lenet.sh#訓練模型

更復雜的情況看https://github.com/BVLC/caffe/issues/2709

其他問題以后發現繼續補充。

2017/10更新:

10錯誤:/usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array

問題描述:執行ssd環境配置時出現上述錯誤。

根據這篇博客http://blog.csdn.net/u010733679/article/details/52125597上說是gcc版本過低

問題解決:按照上述博客所說升級一下gcc。



11錯誤:執行create_data.sh時報錯,如下圖。

問題分析:上網查找說是numpy數據包版本過低。

問題解決:執行命令$sudo pip install -U numpy升級一下numpy數據包

12錯誤:繼問題11numpy版本錯誤問題后,執行create_data.sh 報如下錯誤:


問題分析:綜上問題描述,還是python庫沒安裝全

問題解決:按照問題4解決辦法執行一次,解決問題。



13錯誤:

fatal error:gflags/gflags.h:No such file or directory

如下圖所示。

解決辦法:

參考網上教程https://blog.csdn.net/artprog/article/details/79271388,輸入下面指令:

sudo apt-get install libgflags-dev

14錯誤:

fatal error:glog/logging.h:No such file or directory

如下圖所示。

解決辦法:

參考網上教程https://blog.csdn.net/artprog/article/details/79271388,輸入下面指令:

sudo apt-get install libgoogle-glog-dev

15錯誤:

fatal error: cblas.h: No such file or directory

如下如所示。

解決方法:

sudo apt-get install libblas-dev

16錯誤:

fatal error: hdf5.h: No such file or directory

解決方法:

修改Makefile.config文件,定位到INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include,在后面加上/usr/include/hdf5/serial:

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib后面加上 /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改為:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

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

17錯誤:

/usr/bin/ld: cannot find -lcblas

/usr/bin/ld: cannot find -latlas

collect2: error: ld returned 1 exit status

解決方法:

sudo apt-get install libopenblas-dev

18錯誤:

fatal error: lmdb.h: No such file or directory

解決辦法:

sudo apt-get install liblmdb-dev

19錯誤:

nccl.h: No such file or directory

錯誤原因:

因為需要多GPU支持訓練,在多個 GPU 上運行 Caffe 需要使用 NVIDIA NCCL。

解決辦法:

參照CUDA官網的教程https://www.nvidia.cn/object/caffe-installation-cn.html

$ git clone https://github.com/NVIDIA/nccl.git

$ cd nccl

$ sudo make install -j4

NCCL 庫和文件頭將安裝在 /usr/local/lib 和 /usr/local/include 中



2019/1/8

因為一些原因,新來的筆記本重新安裝了caffe,這次出現了新的問題。

20錯誤:

編譯$make pycaffe生成python的caffe接口時,報錯找不到python.h文件。

錯誤原因:

因為編譯make 之前,Makefile.config文件中python 路徑指定錯誤。

解決辦法:

1.執行命令$whereis python, 可以查看python的絕對路徑,然后修改Makeifle.config中的PYTHON_INCLUDE的文件路徑。

2.執行$make -j8,重新編譯caffe.

3.執行$make pycaffe,生成caffe的python接口即可。



2019/1/25

這次出現的錯誤是:google/protobuf/arena.h找不到

21錯誤:

.build_release/src/caffe/proto/caffe.pb.h:22:35: fatal error: google/protobuf/arena.h: 沒有那個文件或目錄

錯誤分析:

參考博客:https://blog.csdn.net/qq_33144323/article/details/81259985,可知是protobuf版本沖突問題。caffe能正確使用的是protobuf-2.6.1版本。

我裝了ananconda3,其自帶的protobuf版本要高于caffe的需求版本,而ubuntu自帶的protobuf版本符合。

解決辦法:

依據上面博客,既可以強制更改protobuf降版本,也可以暫時關閉ananconda環境,安裝。

我的ananconda安裝的是我的當前路徑,沒有裝到系統環境中,我采用了偷懶的辦法,使用sudo權限,跳到ubuntu系統環境下編譯,其實相當于屏蔽anaconda環境編譯,這樣可以在最大保證不改變其他環境配置的前提下能夠編譯通過,不過這樣付出的代價的是后面的pycaffe接口和matcaffe接口,同樣需要執行sudo權限編譯。




2019/12/12

22錯誤

/usr/bin/ld: cannot find -lcblas

/usr/bin/ld: cannot find -latlas

collect2: error: ld returned 1 exit status


錯誤分析

這次出現的錯誤是第錯誤17,但是按照錯誤17的解決方法,仍不能解決問題,查看caffe安裝教程(網址為:http://caffe.berkeleyvision.org/installation.html)發現需要更改 Makefile.config中變量設置。如圖所示。


解決辦法:

在錯誤17的解決方法的基礎上,修改Makefile.config中變量設置,將BLAS值設置為open。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容