- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在使用来自源代码和 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链接了
当我的 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)
非常感谢您的努力。
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/
我在使用来自源代码和 Protobuf 库的 contrib 模块安装 OpenCV 时遇到了一些问题。 我有一个程序,需要 Protobuf 3.1。和带有 contrib 模块的 OpenCV 3
我是一名优秀的程序员,十分优秀!