ubuntu編譯caffe時(shí)make all不通過的一些問題總結(jié)

本文根據(jù)我編譯時(shí)出現(xiàn)的一些錯(cuò)誤盔几,參考了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屈芜,做的一些記錄,以便以后備用牌捷。

系統(tǒng)環(huán)境做一下說明:

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

(后來實(shí)驗(yàn)配置環(huán)境多了,發(fā)現(xiàn)問題大同小異,上述系統(tǒng)版本號(hào)是我第一次配置時(shí)的系統(tǒng)信息君丁,不一定必須遵循,只要你的Ubuntu 和cuda,cudnn 版本號(hào)對應(yīng)就行将宪,這個(gè)對應(yīng)關(guān)系網(wǎng)上可以查到绘闷,在此就不復(fù)制了)。

錯(cuò)誤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

錯(cuò)誤描述:如上圖顯示较坛,未定義的引用“TIFFReadRGBAStrip@LIBTIFF_4.0”印蔗,說明是libtiff庫未指明,

解決辦法:執(zhí)行下面命令操作查找對應(yīng)庫路徑丑勤,并添加

$ldconfig -p|grep libtiff #這個(gè)指令是查找?guī)焖饕?/p>

下圖是我查找到的鏈接關(guān)系

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

然后再編譯make all,就可以繼續(xù)進(jìn)行下面測試了华嘹。

$make clean # 清理上次編譯錯(cuò)誤記錄

$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....


錯(cuò)誤描述:這個(gè)是因?yàn)閏plus文件索引路徑錯(cuò)誤問題,我安裝caffe是用的是anaconda2法竞,一些路徑出了問題耙厚,將python對應(yīng)路徑添加進(jìn)去就好

解決辦法:如下

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

然后再編譯make all,就可以繼續(xù)進(jìn)行下面測試了。

$make clean# 清理上次編譯錯(cuò)誤記錄

$make all -j8


2017/10更新:

問題描述:前一段時(shí)間服務(wù)器又歇菜了爪喘,項(xiàng)目組的同學(xué)重裝系統(tǒng)后颜曾,發(fā)現(xiàn)正常步驟安裝caffe后,老是找不到pyconfig.h文件秉剑,也就是上面這個(gè)問題泛豪。可是檢查的時(shí)候路徑,環(huán)境變量什么都沒問題诡曙。后來又把caffe卸了重裝好幾次臀叙,還是這個(gè)問題。今早又重新裝載的時(shí)候价卤,git clone 時(shí)劝萤,報(bào)下面這個(gè)錯(cuò):

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

問題分析:好吧岁疼,那我查看一下我的根目錄下的.config文件夾阔涉,發(fā)現(xiàn)我的這個(gè)文件加的所有者是root〗萑蓿可能是這個(gè)原因瑰排,跨權(quán)限調(diào)用文件的原因,造成后面的一系列編譯錯(cuò)誤吧暖侨。

解決辦法:

參照這篇博客(http://www.linuxidc.com/Linux/2015-03/114695.htm)椭住,我把文件夾所有者改了回來,編譯發(fā)現(xiàn)沒有錯(cuò)了它碎,都通過了函荣。

3.錯(cuò)誤

ImportError: No module named Cython.Distutils

解決辦法:

安裝Cython

$sudo apt-get install cython

4錯(cuò)誤

make pycaffe后,還有一些庫找不到扳肛,我自己測試傻挂,這個(gè)問題也適用于基于CAFFE 平臺(tái)的的其他神經(jīng)網(wǎng)絡(luò),例如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這個(gè)文件記錄caffe的Python接口所需要的所有函數(shù)庫金拒,執(zhí)行上面語句便可依次檢查是否所需模塊都安裝,有的話自動(dòng)跳過或升級(jí)套腹,沒有的話自動(dòng)安裝绪抛。

5錯(cuò)誤

由于服務(wù)器桌面系統(tǒng)經(jīng)常崩盤,找售后他們又重裝了系統(tǒng)电禀,所以所有的環(huán)境得重新配置幢码。執(zhí)行make all 時(shí),發(fā)現(xiàn)了下面的錯(cuò)誤尖飞。經(jīng)排查發(fā)現(xiàn)是cudnn安裝配置錯(cuò)誤症副。


查到店雅,博客http://blog.csdn.net/u011070171/article/details/52292680,給的解釋說贞铣,這是因?yàn)楫?dāng)前版本的caffe的cudnn實(shí)現(xiàn)與系統(tǒng)所安裝的cudnn的版本不一致引起的闹啦。上官網(wǎng)查了了一下caffe對cuda相關(guān)要求,顯示如下:


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

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

1.將./include/caffe/util/cudnn.hpp 換成最新版的caffe里的cudnn的實(shí)現(xiàn),即相應(yīng)的cudnn.hpp.

2. 將./include/caffe/layers里的酱畅,所有以cudnn開頭的文件琳袄,例如cudnn_conv_layer.hpp。? 都替換成最新版的caffe里的相應(yīng)的同名文件圣贸。

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

都替換成最新版的caffe里的相應(yīng)的同名文件用含。

rbgirshick的py-faster-rcnn實(shí)現(xiàn),因?yàn)槠鋍udnn實(shí)現(xiàn)為舊版本的實(shí)現(xiàn)帮匾,所有出現(xiàn)了以上問題.


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

將之前安裝的/usr/local/cuda-8.0/l路徑下的cudnn的文件刪除啄骇,按照網(wǎng)上教程重新安裝v5.0版,文件關(guān)聯(lián)一下瘟斜,就好

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

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

6錯(cuò)誤

運(yùn)行make runtest,一直報(bào)錯(cuò)

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

錯(cuò)誤描述:按照http://www.cnblogs.com/penguinliong/p/6351215.html這篇博客說是GPU被占用螺句,可是我運(yùn)行$nvidia-smi查看顯示虽惭,說沒有進(jìn)程調(diào)用GPU,經(jīng)排查還是cudnn的安裝問題,因?yàn)榉?wù)器是多人在使用蛇尚,被別人裝了兩個(gè)版本的cudnn芽唇。

解決辦法:刪掉一個(gè)cudnn,重新安裝配置連接,然后再編譯make all,就可以繼續(xù)進(jìn)行下面測試了取劫。

$make clean# 清理上次編譯錯(cuò)誤記錄

$make all -j8

7錯(cuò)誤

今天在給師姐裝caffe時(shí)匆笤,遇到了Python接口無法調(diào)用的問題,具體問題描述如下:

按照正常安裝步驟谱邪,執(zhí)行$make all炮捧,$make test , $make runtest ,$make pycaffe都正常惦银。但是$Python打開Python編譯器后咆课,執(zhí)行import caffe調(diào)用caffe的Python接口是出現(xiàn)錯(cuò)誤:No module named _caffe末誓,網(wǎng)上查找大部分解釋說是 make pycaffe 編譯出錯(cuò),沒有正確生成Python腳本文件傀蚌。

解決辦法:

$make clean# 清理上次編譯錯(cuò)誤記錄

sudo 超級(jí)用戶權(quán)限重新執(zhí)行上面make all ,make pycaffe指令基显。

需要注意的是,如果錯(cuò)誤是 no module named caffe ,可能是你的caffe路徑配置錯(cuò)誤善炫,執(zhí)行下面命令撩幽,將caffe/python/環(huán)境變量路徑添加.bashrc文件中。

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

在文件最后添加下面指令

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

關(guān)閉文件箩艺, 輸入下面指令窜醉,是環(huán)境變量生效,

$source ~/.bashrc


然后,在Python編譯器中import caffe艺谆,測試應(yīng)該可以正常調(diào)用caffe榨惰。

8錯(cuò)誤

還是上面的接口問題,按照錯(cuò)誤7解決no module問題后静汤,再次測試出現(xiàn)新的錯(cuò)誤如下:


錯(cuò)誤描述:如上圖最后一行所示琅催,顯示運(yùn)行時(shí)錯(cuò)誤,網(wǎng)上找問題說是numpy錯(cuò)誤虫给。

解決辦法:更新numpy模塊藤抡,執(zhí)行下面語句更新。

$sudo pip install numpy --upgrade

9錯(cuò)誤

環(huán)境配置好后抹估,做手寫體網(wǎng)絡(luò)測試缠黍,執(zhí)行 (在caffe安裝目錄下)

$sudo examples/mnist/train_lenet.sh

出現(xiàn)如下錯(cuò)誤


問題描述:出現(xiàn)這種錯(cuò)誤是由于訓(xùn)練數(shù)據(jù)沒有準(zhǔn)備好。

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

$.data/mnist/get_mnist.sh#準(zhǔn)備數(shù)據(jù)

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

$.examples/mnist/train_lenet.sh#訓(xùn)練模型

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

其他問題以后發(fā)現(xiàn)繼續(xù)補(bǔ)充药蜻。

2017/10更新:

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

問題描述:執(zhí)行ssd環(huán)境配置時(shí)出現(xiàn)上述錯(cuò)誤瓷式。

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

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



11錯(cuò)誤:執(zhí)行create_data.sh時(shí)報(bào)錯(cuò)语泽,如下圖贸典。

問題分析:上網(wǎng)查找說是numpy數(shù)據(jù)包版本過低。

問題解決:執(zhí)行命令$sudo pip install -U numpy升級(jí)一下numpy數(shù)據(jù)包

12錯(cuò)誤:繼問題11numpy版本錯(cuò)誤問題后湿弦,執(zhí)行create_data.sh 報(bào)如下錯(cuò)誤:


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

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



13錯(cuò)誤:

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

如下圖所示颊埃。

解決辦法:

參考網(wǎng)上教程https://blog.csdn.net/artprog/article/details/79271388蔬充,輸入下面指令:

sudo apt-get install libgflags-dev

14錯(cuò)誤:

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

如下圖所示。

解決辦法:

參考網(wǎng)上教程https://blog.csdn.net/artprog/article/details/79271388班利,輸入下面指令:

sudo apt-get install libgoogle-glog-dev

15錯(cuò)誤:

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

如下如所示饥漫。

解決方法:

sudo apt-get install libblas-dev

16錯(cuò)誤:

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錯(cuò)誤:

/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錯(cuò)誤:

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

解決辦法:

sudo apt-get install liblmdb-dev

19錯(cuò)誤:

nccl.h: No such file or directory

錯(cuò)誤原因:

因?yàn)樾枰郍PU支持訓(xùn)練庸队,在多個(gè) GPU 上運(yùn)行 Caffe 需要使用 NVIDIA NCCL积蜻。

解決辦法:

參照CUDA官網(wǎng)的教程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

因?yàn)橐恍┰颍聛淼墓P記本重新安裝了caffe,這次出現(xiàn)了新的問題彻消。

20錯(cuò)誤:

編譯$make pycaffe生成python的caffe接口時(shí)竿拆,報(bào)錯(cuò)找不到python.h文件。

錯(cuò)誤原因:

因?yàn)榫幾gmake 之前宾尚,Makefile.config文件中python 路徑指定錯(cuò)誤丙笋。

解決辦法:

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

2.執(zhí)行$make -j8,重新編譯caffe.

3.執(zhí)行$make pycaffe,生成caffe的python接口即可御板。



2019/1/25

這次出現(xiàn)的錯(cuò)誤是:google/protobuf/arena.h找不到

21錯(cuò)誤:

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

錯(cuò)誤分析:

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

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

解決辦法:

依據(jù)上面博客,既可以強(qiáng)制更改protobuf降版本础芍,也可以暫時(shí)關(guān)閉ananconda環(huán)境酪惭,安裝。

我的ananconda安裝的是我的當(dāng)前路徑者甲,沒有裝到系統(tǒng)環(huán)境中,我采用了偷懶的辦法砌创,使用sudo權(quán)限虏缸,跳到ubuntu系統(tǒng)環(huán)境下編譯,其實(shí)相當(dāng)于屏蔽anaconda環(huán)境編譯嫩实,這樣可以在最大保證不改變其他環(huán)境配置的前提下能夠編譯通過刽辙,不過這樣付出的代價(jià)的是后面的pycaffe接口和matcaffe接口,同樣需要執(zhí)行sudo權(quán)限編譯甲献。




2019/12/12

22錯(cuò)誤

/usr/bin/ld: cannot find -lcblas

/usr/bin/ld: cannot find -latlas

collect2: error: ld returned 1 exit status


錯(cuò)誤分析

這次出現(xiàn)的錯(cuò)誤是第錯(cuò)誤17宰缤,但是按照錯(cuò)誤17的解決方法,仍不能解決問題晃洒,查看caffe安裝教程(網(wǎng)址為:http://caffe.berkeleyvision.org/installation.html)發(fā)現(xiàn)需要更改 Makefile.config中變量設(shè)置慨灭。如圖所示。


解決辦法:

在錯(cuò)誤17的解決方法的基礎(chǔ)上球及,修改Makefile.config中變量設(shè)置氧骤,將BLAS值設(shè)置為open。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吃引,一起剝皮案震驚了整個(gè)濱河市筹陵,隨后出現(xiàn)的幾起案子刽锤,更是在濱河造成了極大的恐慌,老刑警劉巖朦佩,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件并思,死亡現(xiàn)場離奇詭異,居然都是意外死亡语稠,警方通過查閱死者的電腦和手機(jī)宋彼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颅筋,“玉大人宙暇,你說我怎么就攤上這事∫楸茫” “怎么了占贫?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長先口。 經(jīng)常有香客問我型奥,道長,這世上最難降的妖魔是什么碉京? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任厢汹,我火速辦了婚禮,結(jié)果婚禮上谐宙,老公的妹妹穿的比我還像新娘烫葬。我一直安慰自己,他們只是感情好凡蜻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布搭综。 她就那樣靜靜地躺著,像睡著了一般划栓。 火紅的嫁衣襯著肌膚如雪兑巾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天忠荞,我揣著相機(jī)與錄音蒋歌,去河邊找鬼。 笑死委煤,一個(gè)胖子當(dāng)著我的面吹牛堂油,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播素标,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼称诗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了头遭?” 一聲冷哼從身側(cè)響起寓免,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤癣诱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后袜香,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撕予,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年蜈首,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了实抡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡欢策,死狀恐怖吆寨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踩寇,我是刑警寧澤啄清,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站俺孙,受9級(jí)特大地震影響辣卒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜睛榄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一荣茫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧场靴,春花似錦啡莉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泞边,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疗杉,已是汗流浹背阵谚。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烟具,地道東北人梢什。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像朝聋,于是被迫代替她去往敵國和親嗡午。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容