protobuf问题的解决

程序调用了libprotobuf.so.8出现了如下错误:

[libprotobuf FATAL google/protobuf/stubs/common.cc:61] This program requires verion 2.6.0 of the Protocol Buffer runtime library, but the installed version is 2.5.0. Please update your library. If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library.(version verification failed in “/build/mir-yHFhjH/mir-0.26.3+16.04.20170605/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc”.)

系统中/usr/lib/x86_64-linux-gnu/ 中出现的是libprotobuf.so.9正是protobuf2.6.1

1、通过protoc --version查看版本
如果成功,则会输出版本号信息,例如:libprotoc 3.5.1
如果有问题,则会输出错误内容。
主要是因为protobuf默认安装在/usr/local,而在一些平台上/usr/local/lib默认不是LD_LIBRARY_PATH

$ sudo vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib/
export PATH=$PATH:/usr/local/bin/
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include/
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include/
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

如果protoc不能使用,则:
(1) vim /etc/profile,添加
  export PATH=$PATH:/usr/local/protobuf/bin/
  export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
  保存执行,source /etc/profile。
  同时在~/.profile中添加上面两行代码,否则会出现登录用户找不到protoc命令。
(2) 配置动态链接库
  vim /etc/ld.so.conf,在文件中添加/usr/local/protobuf/lib(注意: 在新行处添加),然后执行命令: ldconfig

2、报错不是因为系统库版本过低,而是系统使用的这个文件的头部显示mir_protobuf.pb.cc这个文件是由2.5.0的protobuf-compiler编译得来的,这就说明无法通过安装更高版本的库来解决这个问题,因为这个文件是系统已经有的,不能通过重新安装新库来解决这个问题。通过提升系统版本的方式解决这个问题比较稳妥。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值