1. 程式人生 > >編譯caffe時遇到的undefined reference to的問題

編譯caffe時遇到的undefined reference to的問題

在ubantu16.04版本的linux系統中編譯caffe時遇到兩個undefined reference to的路徑問題,在嘗試多個方法後,總結解決方法:

1.undefined reference to `google::protobuf::Message::InitializationErrorString() const'  即:

方法一:caffe的預裝軟體protobuff版本衝突,預設的protoc版本為protoc-2.5.0,需要升級為protoc-2.6.1,並且在bash中加入路徑。(可以使用protoc --version檢視版本)

方法二:若在升級protobuf版本後仍出現該錯誤,需要更改gcc版本。首先gcc --version檢視gcc版本,再到/usr/local/cuda/include$中的host_config.h檔案第119行,如下:


可見需要gcc版本高於5.0,更新gcc版本或建立高版本軟連結。

2.undefined reference to `cv::imread(std::string const&,int)' 即包含`cv的一系列路徑錯誤問題。

解決:這個為opencv版本問題,首先cuda8.0需要opencv-3.0以上的版本支援,在更新好opencv後,在bash檔案中寫入最新的opencv路徑


使用指令pkg-config --modversion opencv檢視opencv版本,確認opencv環境已更新。

注意!!!此時在cmake時檢視opencv版本,若:



可見預設路徑未改變,需要在  cmake  之前使用進行  ccmake  進入如下的環境設定介面,找到OpenCV_3RDPARTY_LIB_DIR_DBG和OpenCV_3RDPARTY_LIB_DIR_OPT兩個路徑

更改為opencv3.0以上版本目錄中包含openCVConfig.cmake檔案的路徑。


此時再進行cmake可見opencv的版本已經更新。

解決上述問題後,在進行cmake,make

可見編譯成功。