当我将可执行文件和lib依赖项复制到另一台计算机并运行该程序时,出现此错误:
该程序是根据Protocol Buffer运行时库的2.6.1版编译的,该库与已安装的版本(3.5.0)不兼容。请与程序作者联系以获取更新。如果您自己编译程序,请确保标头与链接时库来自相同版本的协议缓冲区。
此错误仅在新计算机上发生。我可以在计算机上运行程序而没有任何问题。
我尝试用ldd -d
和objdump -p engine | grep NEEDED
检查其中哪个库带有protobuf,但找不到它们。
我的程序使用:带有Cuda的opencv,boost,tensorflow,tensorRT。
计算机操作系统均为Ubuntu 16.04.6 LTS。
如何找到与该冲突有关的问题?
我尝试通过添加-DBUILD_PROTOBUF=OFF -DPROTOBUF_UPDATE_FILES=ON -DPROTOBUF_INCLUDE_DIR=/usr/include -DPROTOBUF_LIBRARY=/usr/lib/x86_64-linux-gnu/libprotobuf.so
重新编译不带protobuf的opencv。
这不能解决问题。
答案 0 :(得分:0)
您有两个不同的版本 libprotobuf
,其中一个通过动态库安装在 /usr/local/lib/
中。
但是当您构建程序时,您会包含其他版本的 libprotobuf
。
您可以重新安装 libprotobuf
来解决这个问题。
如果您从源代码安装 libprotobuf
,请确保您添加了标志 -Dprotobuf_BUILD_SHARED_LIBS=ON
。