186

我刚刚安装了 CentOS 6 64 位版本,我正在尝试在 64 位机器上安装 32 位应用程序并收到此错误:

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

我是 linux 新手。我该如何解决这个问题?

4

9 回答 9

361

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

安装(基线)对 32 位可执行文件的支持

(如果您在设置中不使用 sudo,请阅读下面的说明)

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

 pkcon install glibc.i686

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

pkcon install ia32-libs

Fedora 或更新的 Red Hat、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

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

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

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

 ldd /usr/bin/YOURAPPHERE

如果你不确定它在/usr/bin你也可以依靠

 ldd $(which YOURAPPNAME)

输出将如下所示:

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

检查缺少的库(例如libSM.so.6在上面的输出中),并为每个你需要找到提供它的包。

查找每个发行版系列的包的命令

Fedora/红帽企业/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

然后搜索

 apt-file find libSM.so.6

注意(通常)情况下的前缀路径/usr/lib;由于历史原因,很少有一些库仍然存在/lib……在典型的 64 位系统上,32 位库存/usr/lib在于/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

在此示例中,包libSM名称是 32 位版本的包的名称是libSM.i686.

然后,您可以安装包以pkcon在 GUI 中使用必要的库,或者sudo dnf/yum/apt-get根据需要...。例如pkcon install libSM.i686。如有必要,您可以完全指定版本。例如sudo dnf install ibSM-1.2.0-2.fc15.i686

一些图书馆的名称前会有一个“时代”指示符;这可以省略(好奇的可以阅读下面的注释)。

笔记

警告

顺便说一句,您面临的问题要么意味着您的 RPM(或 DPkg/DSelect)数据库已损坏,要么您尝试运行的应用程序未通过包管理器安装。如果您是 Linux 新手,您可能希望尽可能避免使用包管理器以外的其他来源的软件...

如果您在设置中不使用“sudo”

类型

su -c

每次你看到sudo,例如,

su -c dnf install glibc.i686

关于库名称中的纪元指示符

名称前的“epoch”指示符是底层 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包的版本号向后滚动,并且“epoch”必须增加,以确保在更新期间更新的版本会被认为是“更新的”。或者类似的事情发生了。两次.)


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

于 2011-11-30T15:33:16.963 回答
18

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

yum groupinstall "兼容性库"

要么使用 'sudo' 作为前缀,要么以 root 身份运行,以最适合您的方式运行。

于 2013-11-03T23:03:49.973 回答
16

通常,当您遇到这样的错误时,只需执行

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
于 2015-01-18T22:57:43.407 回答
4

尝试

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

希望这能解决。

于 2017-05-16T07:24:49.057 回答
2

.i686您也可以改为安装 OpenJDK 32 位 ( )。根据我的测试,它将被安装并正常工作。

sudo yum install java-1.8.0-openjdk.i686

笔记:

java-1.8.0-openjdk包只包含Java Runtime Environment。如果您想开发 Java 程序,请安装java-1.8.0-openjdk-devel包。

有关更多详细信息,请参见此处

于 2018-12-01T07:05:36.813 回答
0

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

因此,我的贡献是针对所有尝试从 IBM 的 Integration Bus 捆绑包中安装 IBM Integration Toolkit 的人。

当您尝试从文件夹 /Integration_Toolkit/IM_Linux 运行“安装管理器”命令时(要运行的文件是“安装”),您会收到这篇文章中显示的错误。

您可以在 IBM 的网页中找到解决此问题的更多说明: https ://www-304.ibm.com/support/docview.wss?uid=swg21459143

希望这对任何试图安装它的人有所帮助。

于 2014-12-03T19:21:39.690 回答
0

我会为 Debian 添加系统中至少需要一个编译器(根据Debian Stretch 和 Jessie 32-bit libraries)。

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

于 2017-10-22T23:57:36.967 回答
0

就我而言,我已经使用命令解决了这个问题yum install redhat-lsb

于 2021-09-04T10:32:10.233 回答
0

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

于 2016-05-17T09:22:56.343 回答