代码之家  ›  专栏  ›  技术社区  ›  Jake Wilson

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

  •  9
  • Jake Wilson  · 技术社区  · 14 年前

    我的客户有一些开发人员编写了一个小型的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
    

    所以这个库已经存在并且是最新的。对我来说,这些错误通常意味着缺少库。接下来我该看哪里?

    6 回复  |  直到 7 年前
        1
  •  9
  •   caf    14 年前

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

        2
  •  14
  •   anon    14 年前

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

    yum install 'libstdc++.so.5'

    如果回购协议有必要,我会安装任何东西。

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

        3
  •  6
  •   andymal    11 年前

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

        4
  •  3
  •   nos    14 年前

    因此,5是标准C++库的一个非常古老的版本。

    做一个 yum search libstdc++ ,您必须安装compat libstdc++包之一。

        5
  •  1
  •   RunThor    8 年前

    如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 第一。

        6
  •  0
  •   Timo Geusch    14 年前

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