如何修复“无法执行二进制文件:执行格式错误” Ubuntu – Digitalixy.com

您所在的位置:网站首页 无法执行2进制文件 如何修复“无法执行二进制文件:执行格式错误” Ubuntu – Digitalixy.com

如何修复“无法执行二进制文件:执行格式错误” Ubuntu – Digitalixy.com

2023-06-15 12:19| 来源: 网络整理| 查看: 265

虽然在使用官方 apt-get 存储库时不应该发生这种情况,但如果您从 Internet 下载软件并运行它,您就有可能会看到可怕的 bash: ./nameOfProgram: 无法执行二进制文件: Exec 格式错误. 此错误,通常后跟 bash: ./nameOfProgram.sh: 权限被拒绝 类似的东西,表明 Ubuntu 它无法与您下载的二进制文件正确交互。 这是因为,虽然它显然是一个 Linux 二进制文件,它是为与您的内核当前支持的芯片组不同的芯片组而设计的。

大多数使用的人 Ubuntu 它们在基于英特尔发布的标准架构的 32 位或 64 位处理器上运行,而不管它们的微芯片是谁制造的。 重要的是要记住 64 位处理器可以在 32 位模式下运行,所以如果你得到这个错误,即使你有一个 64 位处理器,你有可能运行 32 位版本的 Ubuntu. 只需几个简单的命令即可了解您的芯片的性能。

方法一:使用arch命令

如果您不熟悉机器中安装的微处理器类型,您首先要从命令行使用 arch 命令。 运行此命令后,您只会看到返回的一行输出。 在许多情况下,您会看到 i686,这意味着您拥有 32 位处理器,因此无法运行 x86_64 二进制文件。 如果你看到的是 amd64 或类似的东西,那么你有一个 x86_64 处理器,至少在理论上,应该能够运行大多数 32 位和 64 位二进制文​​件。 不像 Microsoft Windows, Ubuntu Linux 它实际上包含允许 644 位芯片组用户运行 16 位的正确工具 Windows 在许多情况下,您的操作系统上的程序也是如此。

即使您实际上并未使用该特定型号的微芯片,这些条款仍然有效。 例如i686是怎样的 Linux 指代许多 32 位处理器,即使它们实际上不是 Intel 80686 芯片。即使您使用的是 Intel 64 位技术,Arch 仍然可以将您的处理器称为 amd64 芯片。 这并不表示错误,可以安全地忽略。 你可以用猫 /proc/cpu信息 或者更多 /proc/cpu信息 找出您正在使用的处理器的确切类型。 由于此文件中的行很长,如果您使用的是图形终端窗口,则可能需要在发出它之前按 F11。 虚拟控制台的用户,尤其是与 Ubuntu 服务器,您不必担心太多。

您可能会看到一些其他类型的输出,这可能会进一步限制您在运行软件时的选择。 Ubuntu 它支持 PowerPC 体系结构的时间更长,这种体系结构存在于某些工作站以及许多较旧的 Classic Macintosh 和 OS X Macintosh 机器上。 其实还是可以找到 Ubuntu 这些体系结构的存储库,尽管今天它们得到的支持很少。 但是,您很可能无法运行很多 Linux 在这种情况下,您从官方存储库之外的互联网下载的二进制文件。 那并不意味着 Ubuntu 它在这些机器上不起作用,尽管您可能想看看更轻便的 Lubuntu 发行版。

方法二:使用文件命令

file 命令识别不同文件包含的内容,并且通常非常准确。 尝试通过键入文件来识别有问题的文件 节目名称 查看输出的是 32 位 ELF 还是 64 位 ELF。 如果它告诉您它是一个 64 位 ELF 二进制文件并且您收到了 i686 作为 arch 命令的输出,那么您就无法在您的机器上合理地运行它。 如果您使用的是运行 32 位 Ubuntu 的 64 位微处理器,那么从技术上讲,您可以重新安装操作系统,尽管这对于运行单个程序来说有点极端。

还有一个非常真实的机会,无论多么小,你都会遇到一个二进制文件,当你尝试运行它时,即使你已经对其运行了恶意软件扫描,它也会将垃圾字符扔到终端中。 这些字符通常采用菱形块的形式,或者采用其中具有数值的矩形立方体的形式。 一些计算机科学家称后者为豆腐,它代表当前安装的字体将无法显示的字符的 Unicode 值。 如果终端像这样显示它们,您可以确定这不是字体错误或与恶意软件有关。 相反,这仅仅是因为编译成二进制文件的微处理器操作码对您的系统来说太陌生了,以至于它不知道如何解释某些代码。

解决此问题的最佳方法是为您的体系结构安装适当的包。 如果您从内部安装软件包 Ubuntu, 然后 apt-get 系统或 Synaptic 图形管理器可以毫无问题地覆盖你。 如果您从其他发行版下载软件包,则需要为您的架构找到合适的。 以 arch Linux gvim 包列表为例。 虽然默认包具有 x86_64 架构,但也有一个用于 i686 芯片组。 这将适用于运行在英特尔中断框架上的 32 位机器,但请记住,术语 i686 和 32 位并不总是相互包含,因为其他芯片组 Linux 支持实际上有自己的 32 位实现。

探索所有 GNU/ 的用户Linux 现场可能会发现自己的二进制文件是为比这些更奇特的技术编译的。 Linux 这是一个真正的跨平台代码场景,因此您将看到 OpenRISC、MIPS、SPARC、M32R、MN103、ARM、ARC、Alpha 和许多其他标准二进制文件经过编译后可以正常工作。 您很可能无法运行其中的任何一个,即使 ARM 是一种非常流行的智能手机和平板电脑平台。 它也是 Raspberry Pi 所基于的平台,这意味着如果您实际上正在运行 Ubuntu 在移动设备上或 Ubuntu Raspberry Pi 的 MATE 发行版,您实际上需要它们而不是 Intel 32 位或 x86_64 二进制文件。

接下来阅读

Ubuntu 18.04 LTS Bionic Beaver 正式可用于 UbuntuKubuntu,…修复:Photoshop 中的“文件格式模块无法解析文件”错误如何修复“无法在临时目录中执行文件”错误 Windows……Ubuntu 16.04.5 LTS 之后立即发布 Ubuntu 18.04 LTS,所有过去的软件包……


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3