CentOS 64位错误的ELF解释器

eeq64g8w  于 2022-11-08  发布在  其他
关注(0)|答案(9)|浏览(191)

我刚刚安装了CentOS 6 64位版本,我试图在64位机器上安装32位应用程序,并得到了这个错误:
/lib/ld-linux.so.2中的一个或多个命令行文件中的一个或多个。错误的ELF解释器:没有这样的文件或目录
我是linux新手。我该如何解决这个问题?

hec6srdp

hec6srdp1#

您使用的是64位系统,并且没有安装32位库支持。

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

(if您在设置中没有使用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

在此示例中,软件包的名称为libSM32位版本的软件包的名称为libSM.i686
然后,您可以在GUI中使用pkconsudo 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月)
zrfyljdw

zrfyljdw2#

刚刚在一台新安装的CentOS 6.4 64位机器上遇到了同样的问题。一个yum命令就可以修复这个问题以及99%的类似问题:
yum groupinstall“兼容性库”
您可以使用'sudo'作为前缀或以root用户身份运行,选择最适合您的方式。

y1aodyip

y1aodyip3#

一般来说,当您遇到这样的错误时,只需

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
fsi0uk1n

fsi0uk1n4#

尝试

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

希望这里能清理干净。

ws51t4hk

ws51t4hk5#

你也可以安装OpenJDK 32位(.i686)来代替,根据我的测试,它会安装并工作,没有问题。

sudo yum install java-1.8.0-openjdk.i686

注意事项:

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

有关详细信息,请参阅here

rbpvctlc

rbpvctlc6#

只是想在BRPocock中添加一条评论,但我没有足够的特权。
因此,我的贡献是为每个尝试从IBM的Integration Bus包安装IBM Integration Toolkit的人。
当您尝试运行“安装管理器”命令从文件夹/Integration_Toolkit/IM_Linux(要运行的文件是“安装”),你得到的错误显示在这篇文章中。
有关解决此问题的详细说明,请参阅IBM的以下网页:https://www-304.ibm.com/support/docview.wss?uid=swg21459143
希望这对任何试图安装它的人有帮助。

sulc1iza

sulc1iza7#

如果您有任何问题,请在这里输入您的密码。

lsmd5eda

lsmd5eda8#

我想补充的是,对于Debian,系统中至少需要一个编译器(根据Debian Stretch and Jessie 32-bit libraries)。
我安装apt-get install -y gcc-multilib是为了在我的基于debian:jessie的docker容器中运行32位的可执行文件。

jjjwad0x

jjjwad0x9#

在我的例子中,我使用命令yum install redhat-lsb解决了这个问题

相关问题