記我安裝Caffe的血淚史(2)


不知不覺居然花了一個星期來安裝Caffe。。。真是醉了。

接上一篇blog,本以為編譯完cuda,opencv之后問題就差不多了(其實本來是沒有什么問題的,但硬是被我搞了一堆事情出來....)

出於對作死的熱愛,本人沒有選擇官方的Caffe進行安裝,而是選擇了一位韓國大兄弟diy過的Caffe。

然后就是瘋狂的報錯...一瞬間報錯4000行你敢不敢信?多得終端都顯示不完...由於我是中文的ubuntu,報錯里面還是一堆亂碼。

研究了許久沒有結果之后我把調試信息的輸出改成中文,然后將編譯信息輸出到文件里....

然而着這並沒有什么卵用(媽個雞)

這是上星期四的安裝進度...

一直跳票到前天下午,我,又回來了,面對4000行的報錯信息...

這4000行的報錯是什么樣的呢...

undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()

就是它!Caffe里幾乎所有的cpp代碼都報了這個錯!

機智的我首先想到是不是編譯器版本不對...

於是我把gcc5,gcc4.9,gcc4.8,gcc4.7(包括g++)都試了一遍....

然並卵....

而且網上居然沒有人說在安裝Caffe的時候遇到過這個問題

本來我也考慮過是不是這位大兄弟的Caffe有問題...所以我也把官方的Caffe也下了下來...

但是...由於Makfile和Makefile.configure需要修改,所以我把這位兄弟的Makefile拷到了官方的Caffe里面...

然后官方的Caffe也報出了一樣的錯...

你應該已經猜到了...沒錯,就是這位兄弟的Makefile !

當我把官方原版的Makefile從github上拷下來之后...錯誤果然沒有了!!!

現在的錯誤變成了

 undefined reference to `google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::string const&, unsigned char*)

然而這個錯誤其實是我自找的....

因為之前報錯的時候我懷疑是protobuf的問題...然后我用gcc4.9重新編譯了一遍protobuf....

於是我用gcc5編譯Caffe的時候果斷出錯了..

然而我用gcc5重新編譯了一遍protobuf之后還是報錯...

MDZZ

最后發現是自己忘記make clean了...

所以gcc4.9編譯出來的protobuf反復被install上去...真是醉了

 

其實遇到了很多問題...不過記不太清了...有的問題bing一下就解決了,改改Makefile,配置文件就行了

,有的問題和上述差不多,就是gcc版本不對...

我遇到的最多的問題就是gcc的版本沖突問題,這個很重要,搞清楚了這個caffe的安裝就輕松多了。

因為gcc4到gcc5的變化非常大,如果依賴的編譯和Caffe的編譯使用不同的編譯器的話就會報

undefined reference(未定義的引用) to XXXX

所以最好從頭到尾使用一個gcc編譯器,編譯opencv,cuda,caffe,以及所有依賴

在這里給一些tip,希望后來人小心。

1 cuda8 支持gcc5 但是cuda8以下不支持(或者說會出問題,github上有人這么說的,我沒試過)

2 ubuntu15.10,16.04通過apt-get安裝的都是用gcc5編譯過的軟件包,在15.10之下的ubuntu通過apt-get應該默認安裝gcc4編譯的軟件包

3 必要的時候就去官網上下載依賴項源碼自己手動編譯...手動編譯並不麻煩(雖然我手動編譯之后都在自找麻煩)

4 遇到問題不要百度,百度一下,真的會死!不能google就用bing,不要搜中文,注意看github和stackouflow還有google group上的問題和回答,非常有幫助!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM