在编译chromium代码的过程中发现,官方推荐使用的版本是ubuntu16.04,但是这个版本的ubuntu比较老旧,一些库都比较老了,但是google自己用的部分却是挺新的,protobuf就是一个例子,在ubuntu16.04上默认安装的protobuf的版本是2.6.1,但是chromium在执行的时候用的是自己代码编译出的protobuf库,版本是3.5.1就会报错,提示你版本不兼容,比较坑的是,这个东西是在执行二进制文件的时候报错的,就是需要会重新编译。同时需要安装新版本的protobuf,报错如下所示

[libprotobuf FATAL ../../third_party/protobuf/src/google/protobuf/stubs/common.cc:79] This program was compiled against version 2.6.1 of the Protocol Buffer runtime library, which is not compatible with the installed version (3.5.1).  Contact the program author for an update.  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-O8_xaj/mir-0.26.3+16.04.20170605/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc".)
Aborted (core dumped)

卸载原来的protobuf

如果原来有则需要卸载,可以通过protoc --version查看当前版本,版本不对可以卸载

$ sudo apt remove libprotobuf-dev #这个不确定是否需要卸载
$ sudo apt remove protobuf-compiler

安装protobuf

在ubuntu16.04上安装protobuf
要先确定一点,你要安装的版本的是多少,在这个网址https://github.com/protocolbuffers/protobuf/tags下载你所需要的包,语言也需要搞清楚,例如我用于C++编译的3.5.1版本的包,下载protobuf-cpp-3.5.1.tar.gz就好了。(其他语言就下其他版本的,如果全都要可以下all的)
下好之后解压,进入解压后的目录,准备开始安装
需要注意的一点是这个protobuf默认安装在/usr/local,在一些平台上/usr/local/lib默认不是LD_LIBRARY_PATH,你可以手动添加,但是如果把安装目录指定在/usr会更简单省事儿。
那么怎么指定呢?下面是默认安装命令,但是先别急着执行

$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.
修改默认安装路径

/usr/local不是LD_LIBRARY_PATH,但是/usr是啊,改下默认安装路径,在执行第二步的时候指定

$ ./configure --prefix=/usr
没有指定怎么办

如果没有指定有可能会出现找不到库的情况可以通过protoc --version查看,找不到库会报错,如果能找到就会显示安装的版本
手动添加到/etc/profile中

$ 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/

然后重启,查看版本验证即可

后续

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

转载于:https://www.cnblogs.com/lenomirei/p/10342411.html

protobuf版本冲突相关推荐

  1. protobuf版本常见问题

    protobuf版本常见问题 许多软件都依赖 google 的 protobuf,我们很有可能在安装多个软件时重复安装了多个版本的 protobuf,它们之间很可能出现冲突并导致在后续的工作中出现版本 ...

  2. 解决maven版本冲突——maven-shade

    目录 背景 maven-shade-plugin介绍 解决问题 1.环境准备 2.解决方案 3.引入依赖 一些需要注意的坑 背景 在maven项目中引入新的第三方组件时,组件中的依赖可能会与项目已有组 ...

  3. 我爱Java系列---【 maven依赖版本冲突的解决方法】

    我爱Java系列---[ maven依赖版本冲突的解决方法] 参考文章: (1)我爱Java系列---[ maven依赖版本冲突的解决方法] (2)https://www.cnblogs.com/hu ...

  4. 使用NPOI时ICSharpCode.SharpZipLib版本冲突问题解决

    使用NPOI时ICSharpCode.SharpZipLib版本冲突问题解决 参考文章: (1)使用NPOI时ICSharpCode.SharpZipLib版本冲突问题解决 (2)https://ww ...

  5. github上的版本和本地版本冲突的解决方法(Updates were rejected because the tip of your current branch is behind)

    github上的版本和本地版本冲突的解决方法(Updates were rejected because the tip of your current branch is behind) 参考文章: ...

  6. 解决 .net core 中 nuget 包版本冲突问题

    解决 .net core 中 nuget 包版本冲突问题 参考文章: (1)解决 .net core 中 nuget 包版本冲突问题 (2)https://www.cnblogs.com/dudu/p ...

  7. 【转】Windows7 下安装 JDK 7 时版本冲突问题解决

    原文网址:http://wxl24life.iteye.com/blog/1966058 自己电脑上一直用的 JDK 版本是 1.6,今天决定更新到 1.7,在安装 JDK 1.7 后,控制台输入 j ...

  8. Linux下搭建SVN+版本冲突

    环境:CentOs 6.5(最小化安装) 参考资料:http://www.iusesvn.com/subversion/tortoisesvn_doc/ [root@localhost ~]# yum ...

  9. 【SmartJob】【隔离装置】WEB/统计程序和隔离程序共享服务器时的JAVA版本冲突问题

    SmartJob.DmsWeb与SmartSys共享服务器容易引发Java版本冲突问题: Java版本不正确 UnsupportedClassVersionError Exception in thr ...

最新文章

  1. hibernate重要知识点总结
  2. 【面向对象设计模式】 接口型模式 (一)
  3. 全球及中国铝拉丝润滑剂行业竞争格局及运营前景研究报告2021-2027年
  4. Android NDK调试定位错误
  5. [机器学习] Boosting算法4 --- LightGBM介绍与分布式
  6. msbuild explorer
  7. strlen() Bug
  8. html body不定宽居中,纯CSS实现元素垂直水平居中-非固定宽度
  9. 基于JAVA+SSH+MYSQL的水果商城系统
  10. 链表+启发式合并(bzoj 1483: [HNOI2009]梦幻布丁)
  11. C语言面试题分类-位运算
  12. php session的一些理解
  13. 初学python100例-案例10 python兔子生兔子 多种不同解法 青少年python编程 少儿编程案例讲解
  14. 软件测试的模式(一、)
  15. 2022年最新广东交安安全员考试题库及答案
  16. Android,翻转卡片动画,实现翻转卡片的动画效果
  17. luogu1968 美元汇率
  18. CAD的图层过滤器有什么用?
  19. 关于NIST随机数测试软件报错问题的补充
  20. 10月25日 c语言 打印所有水仙花数

热门文章

  1. web前端响应式布局,自适应全部分辨率
  2. 《C++覆辙录》——2.9:自反初始化
  3. 基于float的几种布局
  4. PAT (Advanced Level) 1017. Queueing at Bank (25)
  5. 对话框Dialog总结(转)
  6. ShopEx 手动使用分类做导航时,获取当前导航的焦点状态
  7. elasticsearch的cross_fields查询
  8. C++跨平台开发方法/工具
  9. 《剑指offer》第三十一题(栈的压入、弹出序列)
  10. 脏矩形(高效绘图 13.3)