gpt4 book ai didi

c++ - OpenCV 3.2 包括与 protobuf 3.1 冲突的 libmir* 和 protobuf 2.6

转载 作者:太空狗 更新时间:2023-10-29 21:35:17 31 4
gpt4 key购买 nike

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

我有一个程序,需要 Protobuf 3.1。和带有 contrib 模块的 OpenCV 3.2。从源代码编译和安装后,程序本身编译和链接良好。执行程序时,出现以下错误:

[libprotobuf FATAL google/protobuf/stubs/common.cc:78] This program was compiled against version 2.6.1 of the Protocol Buffer runtime library, which is not compatible with the installed version (3.1.0). 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-pkdHET/mir-0.21.0+16.04.20160330/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc".) terminate called after throwing an instance of 'google::protobuf::FatalException' what(): This program was compiled against version 2.6.1 of the Protocol Buffer runtime library, which is not compatible with the installed version (3.1.0). 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-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

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/中的 libprotobuf-lite.so.9)

当我的 Protobuf 3.1 在/usr/local/opencv 也使用 libprotobuf 3.1。在构建 DNN 部件等时

~$ 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 或 libmirclient-dev 或 libmircommon5 等显然是通过 apt 安装的)以及它的用途/用途是什么?
  • Opencv 3 的哪个部分/库/模块使用了 libprotobuf 2.6 和 libmir?
  • 如何在不使用任何 protobuf 库(或指向它的链接)的情况下配置 Opencv 3 构建
  • 在没有 protobuf 2.6 或 libmirprotobuf 的情况下编译我自己的程序的任何其他方法

非常感谢您的努力。

BR 弗洛里安

最佳答案

好的,构建 WITH_QT=ON 不再需要 libmir,因此不再需要 libprotobuf 2.6

这是有效的完整 cmake 命令:

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 ..

关于c++ - OpenCV 3.2 包括与 protobuf 3.1 冲突的 libmir* 和 protobuf 2.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43236034/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com