libstdc ++。so.5:无法打开共享对象文件 - 但库已安装并且是最新的

时间:2010-09-16 22:37:26

标签: linux fedora libstdc++

我的客户有一些开发人员在他们的Linux服务器上运行一个小的c ++命令行应用程序。在其中一台服务器上(运行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

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

7 个答案:

答案 0 :(得分:14)

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

yum install 'libstdc++.so.5'
如果回购有任何必要的话,请安装任何必要的东西。

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

答案 1 :(得分: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.5libstdc++.so.6不兼容。)

答案 2 :(得分:6)

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

答案 3 :(得分:3)

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

执行yum search libstdc++,您必须安装其中一个compat-libstdc ++软件包。

答案 4 :(得分:1)

正如caf和aaron所说,当我遇到类似的错误时,yum install compat-libstdc++-33 libstdc++.so.5 -y正在为我工​​作。

我遇到的唯一问题是,我没有检出正确的仓库,因此我必须运行yum-config-manager --enable rhel-7-server-optional-rpms才能访问这些文件。如果您使用的是RedHat 7以外的其他东西,则需要搜索正确的回购。

您可以通过先运行yum provides libstdc++.so.5来检查您是否拥有正确的回购。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

  

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

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