当前位置: 首页 > 面试题库 >

CentOS 64位错误的ELF解释器

壤驷俊逸
2023-03-14
问题内容

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

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

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


问题答案:

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



 类似资料:
  • 问题内容: 在Solaris计算机上运行我的应用程序时,出现指向某些.so文件的错误。但是,该应用程序在Windows机器上运行得很好。如果我没记错的话,我的应用程序期望使用64位版本,但是Solaris机器中只有.so文件的32位版本。有没有一种方法可以解决此问题,因此它将改用32位版本?我了解它与字节码无关,但可能与JVM无关。我尝试使用-d32或-d64运行,但没有效果。 更新: 这是确切的

  • 我在eclipse C上遇到了问题。我的项目编译并运行,但eclipse(juno)一直说有数千个错误。例如,我的代码中有一个函数SetRun,eclipse提到了这个错误:“被调用的无效参数”候选者是:void SetRun(?),而SetRun是静态无效SetRun(uint32_t run)类型; 我有很多类似的错误,其中eclipse似乎不理解函数的类型,而是放了一个'?'。 我也有很多这

  • 问题内容: 问题:我收到此错误消息: 导出:错误的解释器:无此类文件或目录 当我执行此bash脚本时: 但是bash路径似乎是正确的: 我究竟做错了什么?还是这是Lucid Lynx的错误? 我做了 问题答案: 第一行告诉Linux在哪里可以找到解释器。该脚本还应该可以通过执行,就像您执行的一样。 您很有可能使用Windows编辑器创建了此文件,该编辑器将在每行的末尾放置一个。这是dos / wi

  • 问题内容: 我一直在尝试在我的fed 12系统上安装lpng142。对我来说似乎是个问题。我得到这个错误 我该如何解决?该文件中: 问题答案: 要解决此问题,请使用vi或vim打开脚本,然后以vi命令模式(键)进入,然后输入以下命令: 最后保存 要么

  • 问题内容: 以下段错误消息的正确解释是什么? 问题答案: 这是一个段错误,原因是跟随空指针试图查找要运行的代码(即在指令提取期间)。 如果这是一个程序,而不是共享库 运行(并重复给定的其他指令指针值)以查看错误发生的位置。更好的方法是,获得一个带有调试工具的内部版本,并在诸如gdb之类的调试器下重现该问题。 由于是共享库 不幸的是,您被水淹了。事后无法知道动态链接程序将库放置在内存中的位置。重现该

  • 在ActiveMQ Artemis 2.15.0版本中,我们自动创建队列。默认情况下,自动删除设置为true(未更改)。我们不时地看到以下日志。从日志消息来看,服务器似乎试图删除自动创建的队列,但失败了,因为它有1条消息。我的问题是,当队列中有消息时,broker为什么试图删除队列?