首页 > 解决方案 > 使用 google protobuf 错误执行二进制文件

问题描述

我正在使用 google protobuf 在 Ubuntu 16 下开发 C++ 应用程序。当我在同一台机器上编译和运行时,它工作正常,但是当我尝试在另一个 Ubuntu 16 上运行它时,我收到以下错误

./APP: Symbol `_ZTVN6google8protobuf11MessageLiteE' has different size in shared object, consider re-linking
./APP: Symbol `_ZTVN6google8protobuf7MessageE' has different size in shared object, consider re-linking

如果我在第二台机器上编译相同的源代码,它工作正常,但如果我在第一台机器上运行,我也会得到错误。

我试图将列出的所有库复制ldd到另一台机器上的路径中,并且我使用了导出 LD_LIBRARY_PATH,但也无法正常工作。

ldd两台机器的结果是一样的。

linux-vdso.so.1 =>  (0x00007ffd40fda000)
libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f011b4b3000)
libzmq.so.5 => /usr/lib/x86_64-linux-gnu/libzmq.so.5 (0x00007f011b24d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f011b030000)
libprotobuf.so.22 => /usr/local/lib/libprotobuf.so.22 (0x00007f011ab87000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f011a805000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f011a5ef000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f011a225000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f011a021000)
libsodium.so.18 => /usr/lib/x86_64-linux-gnu/libsodium.so.18 (0x00007f0119dc3000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f0119bbb000)
/lib64/ld-linux-x86-64.so.2 (0x00007f011b788000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f01198b2000)

标签: c++protocol-buffersubuntu-16.04

解决方案


推荐阅读