首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV 3.2包括libmir*和Protobuf2.6,这与Probuf3.1相冲突。

OpenCV 3.2包括libmir*和Protobuf2.6,这与Probuf3.1相冲突。
EN

Stack Overflow用户
提问于 2017-04-05 15:52:23
回答 1查看 1.4K关注 0票数 3

我在安装来自源代码和Protobuf库的控制模块时遇到了一些问题。

我有一个程序,需要Protobuf3.1。和OpenCV 3.2与控制模块。在从源代码编译和安装这两个程序之后,程序本身就会编译和链接良好。在执行程序时,我得到以下错误:

此程序是针对协议缓冲区运行库2.6.1版本编译的,该版本与已安装的版本(3.1.0)不兼容。若要更新,请与程序作者联系。如果您自己编译了该程序,请确保您的头来自与链接时间库相同版本的协议缓冲区。(版本验证在"/build/mir-pkdHET/mir-0.21.0+16.04.20160330/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc".)中失败在抛出'google::protobuf::FatalException‘what()的实例后调用的终止:该程序是针对协议缓冲区运行时库的2.6.1版本编译的,该版本与已安装的版本(3.1.0)不兼容。若要更新,请与程序作者联系。如果您自己编译了该程序,请确保您的头来自与链接时间库相同版本的协议缓冲区。(版本验证在"/build/mir-pkdHET/mir-0.21.0+16.04.20160330/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc".)中失败

通过查看我的软件的链接库,我发现protobuf包含在2.6中。(so.9)和3.1 (so.11)以及libmir*.so

代码语言:javascript
复制
ldd localization | grep protobuf*
libprotobuf.so.11 => /usr/local/lib/libprotobuf.so.11 (0x00007f1797df8000)
libmirprotobuf.so.3 => /usr/lib/x86_64-linux-gnu/libmirprotobuf.so.3 (0x00007f178a751000)
libprotobuf-lite.so.9 => /usr/lib/x86_64-linux-gnu/libprotobuf-lite.so.9 (0x00007f178a31b000)

通过查看链接库,我发现Opencv链接了

  • libmir库(使用protobuf)
  • Protobuf 2.6 ( usr/lib/x86_64-linux-gnu/)

虽然我的Protobuf3.1在/usr/local/中,但是opencv使用libprobuf3.1。在建造DNN部件等方面。

代码语言:javascript
复制
~$ ldd /usr/local/bin/opencv* | grep libproto* 
libprotobuf-lite.so.9 => /usr/lib/x86_64-linux-gnu/libprotobuf-lite.so.9

ldd /usr/local/bin/opencv* | grep libmir*
libmirclient.so.9 => /usr/lib/x86_64-linux-gnu/libmirclient.so.9 (0x00007f1d59b4c000)
libmircommon.so.5 => /usr/lib/x86_64-linux-gnu/libmircommon.so.5 (0x00007f1d56d5f000)
libmirprotobuf.so.3 => /usr/lib/x86_64-linux-gnu/libmirprotobuf.so.3 (0x00007f1d56afe000)
  • 什么是libmir* (libmirclient9或libmirclient9或libmircommon5等显然是通过apt安装的)?
  • Opencv 3的哪个部分/库/模块使用libprobuf2.6和libmir?
  • 如何配置Opencv 3的构建,而不使用任何protobuf库(或指向它的链接)
  • 不使用Protobuf2.6或libmirprotobuf编译我自己的程序的任何其他方法

非常感谢你的努力。

比尔·佛里安

EN

回答 1

Stack Overflow用户

发布于 2017-04-05 20:12:30

好的,构建WITH_QT=ON不再需要libmir,因此不再需要libprobuf2.6。

下面是完整的cmake命令,它起作用了:

代码语言:javascript
复制
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43236034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档