10

我的客户让一些开发人员编写了一个小型 C++ 命令行应用程序来在他们的 Linux 服务器上运行。在其中一台服务器(运行 Fedora 11)上,当我执行应用程序时,我收到以下错误:

error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

显然我做的第一件事是

yum install libstdc++

但我明白了

Package libstdc++-4.4.1-2.fc11.x86_64 already installed and latest version

所以图书馆已经存在并且是最新的。通常对我来说,这些错误表明缺少库。那么接下来我应该去哪里看呢?

4

7 回答 7

14

rpm 因此 repo 知道共享库名称以及提供它们的内容。所以

百胜安装'libstdc++.so.5'

如果 repo 有它,将安装任何必要的东西。

在您的情况下,如果您还没有它们,它将获取 compat-libstdc++-33-3.2.3-66.i586.rpm 及其 32 位 deps,因为您尝试运行的二进制文件显然是 32 位的

于 2010-09-17T04:47:11.670 回答
10

libstdc++-4.4.1-2.fc11.x86_64安装libstdc++.so.6. 你需要compat-libstdc++-33-3.2.3-66.x86_64包来获取libstdc++.so.5. (不要符号链接!libstdc++.so.5并且 libstdc++.so.6不兼容。)

于 2010-09-16T22:47:58.897 回答
6

yum install compat-libstdc++-33 为我解决了这个问题。

于 2014-01-14T23:43:38.247 回答
3

libstdc++.so.5 是标准 c++ 库的一个非常旧的版本。

做一个yum search libstdc++,你必须安装一个 compat-libstdc++ 包。

于 2010-09-16T22:46:10.383 回答
1

正如 caf 和 aaron 所说,yum install compat-libstdc++-33 libstdc++.so.5 -y当我遇到类似的错误时,跑步对我有用。

我遇到的唯一问题是,我没有签出正确的 repo,所以我不得不跑去yum-config-manager --enable rhel-7-server-optional-rpms访问文件。如果您使用的不是 RedHat 7,则需要搜索正确的 repo。

您始终可以通过yum provides libstdc++.so.5首先运行来检查您是否拥有正确的存储库。

于 2017-01-05T14:57:39.443 回答
0

在 RedHat 7 上也为我工作:错误是:

加载共享库时出错:libstdc++.so.5:错误的 ELF 类:ELFCLASS32

解决方案是:
yum install compat-libstdc++-33 libstdc++.so.5 -y

于 2019-08-28T17:52:05.767 回答
-1

您是否检查过该软件包确实安装了 libstdc++.so.5 而不是其他版本?那是你最有可能的问题。

于 2010-09-16T22:39:50.320 回答