CentOS 64位错误的ELF解释器


183

我刚刚安装了CentOS 6 64位版本,我试图在64位计算机上安装32位应用程序,但出现此错误:

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

我是Linux新手。我该如何解决?

Answers:


354

您使用的是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而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

在这个例子中,包的名称是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

关于库名称中的纪元标记

名称前的“时代”指示符是底层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月)


iv已安装,现在我正在获取libpam.so.0:无法打开共享对象文件
c11ada 2011年

7
如果您的应用未列出所需的库,则您必须自行查找并安装它们;如果您很幸运,可以通过yum使用它们。您可以使用“ ldd(二进制)”列出库。对于列出的每个库,都不会像“ /lib/ld-linux.so.2(0x4f8d9000)”或“ libc.so.6 => /lib/libc.so.6(0x4f8fa000) ,请尝试:sudo yum提供* / lib / libWHATEVER.so -查找软件包名称,然后sudo yum install PACKAGE.i686进行安装。(确保抓住i386或i686,而不是x86_64,因为它将默认安装在系统上)
BRPocock 2011年

当您拥有必须迁移到64位系统的32位软件时,此答案是天赐之物。
froggythefrog 2013年

这对于在Fedora 20上安装Oracle的jre 1.7很有帮助。除了glibc.i686,我还必须安装libgcc.i686。
约翰·施密特

17

在刚安装的CentOS 6.4 64位计算机上遇到了相同的问题。单个yum命令将解决此问题,再加上99%的类似问题:

yum groupinstall“兼容性库”

可以在此前缀上加上“ sudo”或以root身份运行,以最适合您的方式运行。


14

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

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

3

尝试

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

希望这能解决。


0

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

因此,我的贡献是为每个试图从IBM Integration Bus捆绑包安装IBM Integration Toolkit的人提供的。

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

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

希望这对尝试安装该软件的任何人有所帮助。


0

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


0

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

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


请在您的答案中包含链接的必要部分
Ibo

0

您也可以安装32位OpenJDK(.i686)。根据我的测试,它将安装并正常运行。

sudo yum install java-1.8.0-openjdk.i686

注意:

Java的1.8.0-的OpenJDK包包含只是Java运行时环境。如果要开发Java程序,请安装java-1.8.0-openjdk-devel软件包。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.