编译caffe时遇到的undefined reference to的问题

在Ubuntu 16.04上编译Caffe时遇到`google::protobuf::Message::InitializationErrorString()`和`cv::imread`的undefined reference问题。解决方法包括:升级protobuf到2.6.1并修改bash路径,检查GCC版本确保高于5.0,更新并配置opencv到3.0以上版本,通过ccmake修改OpenCV的库路径。经过这些步骤,编译成功。

在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

可见编译成功。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值