当前位置:  开发笔记 > 运维 > 正文

CentOS 64位错误的ELF解释器

如何解决《CentOS64位错误的ELF解释器》经验,为你挑选了3个好方法。

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

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

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



1> BRPocock..:

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

然后搜索

 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

关于库名中的纪元指示符

名称前面的"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月)


如果您的应用程序未列出其所需的库,则您必须自行搜索并安装它们; 如果你很幸运,他们将通过yum获得.您可以使用"ldd(binary)"列出库.对于列出的每个库,它不会给出"/lib/ld-linux.so.2(0x4f8d9000)"或"libc.so.6 => /lib/libc.so.6(0x4f8fa000)"等读数",试试:sudo yum提供*/lib/libWHATEVER.so - 找到包名,然后sudo yum安装PACKAGE.i686来安装它.(确保抓住i386或i686,而不是像系统上默认安装的x86_64)

2> 小智..:

刚刚在新安装的CentOS 6.4 64位机器上遇到了同样的问题.单个yum命令将修复此问题以及99%的类似问题:

yum groupinstall"兼容性库"

可以使用"sudo"作为前缀,也可以以root身份运行,以最适合您的方式运行.



3> 小智..:

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

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

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有