编译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

可见编译成功。

你可能感兴趣的:(caffe配置)