CentOS 64位错误的ELF解释器

我刚刚安装了CentOS 6 64位版本,我试图在64位机器上安装一个32位应用程序,并得到这个错误:

/lib/ld-linux.so.2:错误的ELF解释器:没有这样的文件或目录

我是新来的Linux。 我如何解决这个问题?

您位于64位系统上,并且没有安装32位库支持。

为32位可执行文件安装(基准)支持

Fedora / Red Hat系列中的大多数桌面Linux系统:

pkcon install glibc.i686 

可能是一些桌面Debian / Ubuntu系统?

 pkcon install ia32-libs 

Fedora或更新的红帽,CentOS:

  sudo dnf install glibc.i686 

较老的RHEL,CentOS:

  sudo yum install glibc.i686 

即使是较老的RHEL,CentOS:

  sudo yum install glibc.i386 

Debian或Ubuntu:

  sudo apt-get install ia32-libs 

应该抓住你需要的(第一,主)库。

警告

从本质上讲,这可能意味着您的RPM(或DPkg / DSelect)数据库已损坏,或者您尝试运行的应用程序未通过软件包pipe理器安装。 如果您是Linux新手,您可能希望尽可能避免使用软件包pipe理器以外的软件,

如果你没有在你的设置中使用“sudo”

types

 su -c 

每当你看到sudo ,例如,

 su -c dnf install glibc.i686 

一旦你有了,你可能需要支持库

任何需要安装glibc.i686glibc.i386都可能会遇到其他库依赖关系。 要识别提供任意库的软件包,可以使用

  ldd /usr/bin/YOURAPPHERE 

如果你不确定它在/usr/bin你也可以重新使用它

  ldd $(which YOURAPPNAME) 

查看缺less的库的输出,并为每个输出它的名称(例如对于libSM.so.6 => missing您将使用libSM.so.6 )并运行:

Fedora / Red Hat Enterprise / CentOS:

  dnf provides /usr/lib/libSM.so.6 

或者在较早的RHEL / CentOS上:

  yum provides /usr/lib/libSM.so.6 

或者在Debian / Ubuntu上:

首先,安装并下载apt-file的数据库

  sudo apt-get install apt-file && apt-file update 

然后search

  apt-file find libSM.so.6 

注意(通常)情况下的前缀path/usr/lib ; 由于历史原因,一些库仍然存在于/lib下。在典型的64位系统上,32位库位于/usr/lib而64位库位于/usr/lib64

(Debian / Ubuntu以不同的方式组织多种架构库。)

这应该给你一个包名称,例如:

 libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library Repo : fedora Matched from: Filename : /usr/lib/libSM.so.6 

然后您可以pkcon install libSM.i686 (或完全指定版本: sudo dnf install ibSM-1.2.0-2.fc15.i686 )来获取必要的库。 (在GUI中使用pkcon ,或者根据需要使用sudo dnf/yum/apt-get …)

一些图书馆名称前会有一个“时代”标志; 这可以省略,这是底层RPM库处理版本号的方式, 例如

 2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files Repo : fedora Matched from: Filename : /usr/lib/libpng.so.3 

在这里, 2:可以省略; 只要pkcon install libpng.i686sudo dnf install libpng-1.2.46-1.fc16.i686 。 (这含糊其辞地说:在某些时候, libpng软件包的版本号向后滚动,并且必须增加“时代”以确保更新版本在更新期间被认为是“更新的”,或者类似的事情发生了。两次。)

更新以更全面地阐明和涵盖各种软件包pipe理器选项(2016年3月)

在新安装的CentOS 6.4 64位机器上遇到同样的问题。 一个单一的yum命令将解决这个问题,加上99%的类似问题:

yum groupinstall“兼容性库”

或者用“sudo”作为前缀,或者以root身份运行,以最适合您的为准。

一般来说,当你得到这样的错误,就这样做

 yum provides ld-linux.so.2 

那么你会看到像这样的东西:

 glibc-2.20-5.fc21.i686 : The GNU libc libraries Repo : fedora Matched from: Provides : ld-linux.so.2 

然后你就像BRPocock写的那样(如果你想知道逻辑是什么的话):

 yum install glibc.i686 

尝试

 $ yum provides ld-linux.so.2 $ yum update $ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6 

希望这清除。

sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++。so.6

只是想在BRPocock添加评论,但我没有足够的特权。

所以我的贡献是每个人都试图从IBM的Integration Bus软件包中安装IBM Integration Toolkit。

当您尝试从文件夹/ Integration_Toolkit / IM_Linux运行“Installation Manager”命令(要运行的文件是“install”)时,您会看到本文中显示的错误。

有关解决此问题的进一步说明,请参阅IBM的网页: https : //www-304.ibm.com/support/docview.wss?uid=swg21459143

希望这有助于任何人试图安装。

我将为Debian添加至less一个系统编译器(根据Debian Stretch和Jessie 32位库 )。

我安装了apt-get install -y gcc-multilib ,以便在基于debian:jessie的docker容器中运行32位可执行文件。