我在运行程序时看到此消息。
error while loading shared libraries: libprotobuf.so.7: cannot open shared object file:
我如何安装 libprotobuf.so.7?
我在 ubuntu 20.04 上。我试过了,apt-file libprotobuf.so.7
但什么也没发生。我试过sudo apt install libprotobuf7
或 for libprotobuf-c
,但找不到包。我该怎么办?
我的操作系统版本:
LSB Version: core-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
添加 :
我发现这些文件已经安装在我的系统中。
/usr/lib/x86_64-linux-gnu/libprotobuf.so.17
/usr/lib/x86_64-linux-gnu/libprotobuf.so
/usr/lib/x86_64-linux-gnu/libprotobuf.so.17.0.0
因此链接/usr/local/lib/libprotobuf.so.7
到/usr/lib/x86_64-linux-gnu/libprotobuf.so
。(/usr/local/lib2 is in
LD_LIBRARY_PATH)。但是当我执行程序时,我看到:
cm7_tarmac_decode: error while loading shared libraries: libprotobuf.so.7: wrong ELF class: ELFCLASS64
当程序(cm7_tarmac_decode)正在寻找 32 位版本时,我认为这个 libprotobuf.so.17 适用于 x86_64 机器。
因此apt-cache search protobuf
我认为 libprotobuf17 是我的包,并且因为它应该是 32 位的,所以我尝试了一下sudo apt install libprotobuf17:i386
并安装了一些文件。
dpkg libprotobuf17:i386
显示这些已安装的文件。
/usr
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/libprotobuf.so.17.0.0
/usr/share
/usr/share/doc
/usr/share/doc/libprotobuf17
/usr/share/doc/libprotobuf17/changelog.Debian.gz
/usr/share/doc/libprotobuf17/copyright
/usr/lib/i386-linux-gnu/libprotobuf.so.17
因此在 /usr/lib32 下我这样做了
/usr/lib32$ sudo ln -s /usr/lib/i386-linux-gnu/libprotobuf.so.17 libprotobuf.so.7
(将版本 17 伪装成版本 7)。但是当我执行该程序时,我收到了此错误消息。
cm7_tarmac_decode: symbol lookup error: cm7_tarmac_decode: undefined symbol: _ZN6google8protobuf8internal12kEmptyStringE
这意味着 libprotobuf.so.17 没有_ZN6google8protobuf8internal12kEmptyStringE
真正的 libprotobuf.so.7 文件中的符号。
我试过了sudo apt install libprotobuf7:i386
,但没有这样的包。
添加2:
请参阅下面 Tooster 的回答。但在看到该答案之前,我从同事那里收到了 libprotobuf.so.7 文件并使用了它。
答案1
这是根据网络上的少量信息尝试回答的:
基于此线程(中间有关于需要协议缓冲区 2.4.1 的注释)也此主题您可以尝试安装 32 位 2.4.1 版本的 protobufs,然后使用它LD_LIBRARY_PATH
来设置已安装缓冲区的路径,例如使用类似以下内容(请注意,它是临时的):
setenv LD_LIBRARY_PATH /arm/tools/google/protobuf/2.4.1/rhe5-x86_32/lib:/arm/tools/google/protobuf/2.4.1/rhe5-x86_64/lib:$LD_LIBRARY_PATH