unbuntu下編譯caffe出錯問題總結

2021-08-27 03:58:56 字數 4361 閱讀 3753

在編譯caffe ssd過程中,由於嘗試anaconda進行caffe環境搭建,嘗試了過多方法,致使配置混亂,遂重新進行系統配置,並總結了可能會遇到的問題,記錄如下。

問題1及解決方案:

# 也就是下面$(q)後跟的位址,/usr/local/bin/protoc(whereis protoc找到自己安裝的位置)

$(proto_build_dir)/%

.pb.cc $(proto_build_dir)/%

.pb.h : \

$(proto_src_dir)/%

.proto | $(proto_build_dir)

@ echo protoc $<

$(q)

/usr/local/

bin/protoc -

-proto_path=$(proto_src_dir)

--cpp_out=$(proto_build_dir) $<

$(py_proto_build_dir)

/%_pb2.py : $(proto_src_dir)/%

.proto \

$(py_proto_init)

| $(py_proto_build_dir)

@ echo protoc \(python\) $<

$(q)

/usr/local/

bin/protoc -

-proto_path=$(proto_src_dir)

--python_out=$(py_proto_build_dir) $<

(2)降gcc,g++的版本

(cuda版本不能超過6.0,故選擇降至4.8,這個具體問題具體分析)

參考部落格 gcc/g++降至4.8

gcc -

-version # 檢視當前版本

sudo apt-get install gcc-

4.8ls /usr/

bin/gcc*

# 檢視已有的gcc版本,確認一下剛才4.8.5有沒有裝成功

# 某個版本加入gcc候選中,最後的數字是優先順序,我自己是直接設為100,沒任何問題

sudo update-alternatives -

-install /usr/

bin/gcc gcc /usr/

bin/gcc-

4.8100

sudo update-alternatives -

-config gcc # 顯示當前配置的gcc版本

# g++ 降級安裝同理,只需將gcc進行置換即可

# note:此時gcc --version,可能還是顯示的以前預設版本,但配置已經更改為gcc-4.8了,如果出現這種情況也不必驚慌,為啥出現這種情況,我也很費解。

降完版本,如果問題仍未解決,可能是protobuf未用現有gcc/g++進行編譯,可重新進行編譯,編譯可見安裝protobuf 2.6.1,記得make之前make clean一下,防止出錯。

問題2:

file 「/home/crj/caffe/python/caffe/init.py」, line 1, in

from .pycaffe import net, sgdsolver, nesterovsolver, adagradsolver, rmspropsolver, adadeltasolver, adamsolver

file 「/home/crj/caffe/python/caffe/pycaffe.py」, line 13, in

from ._caffe import net, sgdsolver, nesterovsolver, adagradsolver,

importerror: /home/crj/caffe/python/caffe/_caffe.so: undefined symbol: _zn5caffe9sgdsolverife19snapshotsolverstateerkss

解決方法:

# 分析原因:忘記實現make test,重新執行以下步驟可實現import caffe成功

make clean

make all

-j16

make pycaffe

make test

make runtest

問題3:

出錯error:

nvcc src/caffe/test/test_im2col_kernel.cu

/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h(436): error: identifier 「nullptr」 is undefined

/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h(436): error: expected a 「;」

/usr/include/x86_64-linux-gnu/c++/6/bits/c++config.h(205): error: expected a 「;」

/usr/include/c++/6/exception(63): error: expected a 「;」

/usr/include/c++/6/exception(69): error: expected a 「;」

解決方法:

這個在網上查到的解決方案是gcc的版本問題,但是在caffe進行編譯前,已經將gcc降到了gcc-4.8版本,

本不應有此問題,故重新make clean編譯了一遍,成功。

問題4:

出錯error:

ar -o .build_release/lib/libcaffe.a

ld -o .build_release/lib/libcaffe.so.1.0.0-rc3

/usr/bin/x86_64-linux-gnu-ld: 找不到 -lopenblas

collect2: error: ld returned 1 exit status

makefile:568: recipe for target 『.build_release/lib/libcaffe.so.1.0.0-rc3』 failed

make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] error 1

解決方法:

sudo apt-get install liblapack-dev liblapack3 libopenblas-base libopenblas-dev
問題5:

出錯error:

cxx/ld -o .build_release/tools/upgrade_net_proto_binary.bin

.build_release/lib/libcaffe.so:對『boost::re_detail_106501::verify_options(unsigned int, boost::regex_constants::_match_flags)』未定義的引用

解決方法:

# 修改下面makefile檔案#中的內容

# libraries += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_hl hdf5

libraries += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_serial_hl hdf5_serial

問題6

這裡附乙個在裝cuda時遇到的問題

sudo apt-get install cuda

出錯error:

依賴: cuda-9-0 (>= 9.0.176) 但是它將不會被安裝 無法修正錯誤,因為您要求某些軟體包保持現狀,它們破壞了軟體包間的依賴關係

這個問題,總結了一下,最可能出現的原因是,使用系統附加專有驅動引起的,網上一堆說是軟體更新的鍋,試了一下,均不好使,故放棄了專有驅動,自己重新進行安裝nvidia-390,解決了該問題。參考上篇部落格下的安裝gpu版本的tensorflow部分。

也總結下nvidia-smi命令後,顯示的驅動安裝失敗的問題。

(1)按上述步驟進行重新install nvidia-390

(2)在軟體和更新上的附加驅動中,選擇專有驅動nvidia-390

記得sudo reboot進行重啟,如果發現安裝成功,但是仍無效,你可能是忘記了重啟。

重啟過程中,藍屏介面選擇enroll mok ——continue——yes——密碼——reboot,注意(等待太久,藍屏介面自動過渡,同樣會不能成功)

ubuntu下caffe編譯錯誤彙總

題記 林林總總,編譯了不下十次,安裝系統,配顯示卡,驅動,cuda,cudnn也不下於七八次,每次都會有相同或者不同的錯誤,之前一直偷懶沒有記錄,導致每次都要重新搜,實為不便,在此記錄,回憶到就更。1.編譯caffe,在make all的時候報錯 caffe usr bin ld 找不到 lopen...

微軟Caffe編譯

3 使用vs2013開啟caffe.sln編譯自動安裝第三方庫。安裝過程中可能出現的錯誤 e nugetpackages boost.1.59.0.0 lib native include boost format alt sstream impl.hpp error c2220 警告被視為錯誤 沒...

caffe編譯問題

1.編譯提示一系列cudnn問題,caffe版本過舊,與新版cudnn不相容。解決 可嘗試替換 caffe root include caffe util cudnn.hpp以及 caffe root src caffe layers下面名字以cudnn開頭的檔案為最新版caffe內的檔案,最新版c...