我的客户有一些开发人员在他们的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
所以图书馆已经存在并且是最新的。通常对我来说这些错误表明缺少库。那么接下来我应该去哪看?
答案 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.5
和libstdc++.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