CentOS 64 位糟糕的 ELF 解释器

2024-01-05

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

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

我该如何解决这个问题?


您使用的是 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.i686 or glibc.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 and 32位版本的包的名称是libSM.i686.

然后,您可以使用以下命令安装该软件包以获取必需的库pkcon在 GUI 中,或者sudo dnf/yum/apt-get作为适当的…。例如pkcon install libSM.i686。如有必要,您可以完整指定版本。例如sudo dnf install ibSM-1.2.0-2.fc15.i686.

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

Notes

Warning

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

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

Type

su -c

每次你看到sudo, eg,

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.i686 or sudo dnf install libpng-1.2.46-1.fc16.i686。 (它隐约暗示着这样的事情:在某个时刻,libpng软件包向后滚动,并且“纪元”必须增加,以确保较新的版本在更新期间被视为“较新”。或者发生过类似的事情。两次。)


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS 64 位糟糕的 ELF 解释器 的相关文章

  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • 如何用X11复制到剪贴板?

    使用 OS X 上的框架 我可以使用以下命令将 PNG 复制到粘贴板 在 C 中 显然我可以将 NSPasteboard 与 Cocoa 一起使用 include
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • Linux shell 脚本中的 while 循环超时

    这工作正常 无限循环 while TRUE do printf done 我在尝试着timeout this while loop与timeout命令 所有这些都不起作用 timeout 5 while TRUE do printf don
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e

随机推荐