Linux 解决不能执行二进制文件问题
在本文中,我们将学习如何在 Linux 中执行二进制文件。 如果 Linux 无法执行二进制文件,我们还将学习如何解决错误。
通常,当我们在 Linux 中运行 shell 脚本时,就会出现这个错误。 本文将提供所有工作方法来帮助您解决此问题。
Linux 二进制文件
在编程中,binary表示二,二进制文件有两个字符(1,0)。 二进制文件用于存储信息和数据。
在 Linux 中,二进制文件扩展名为 .bin。 二进制文件可以在 Linux 中通过语法 ./file.bin 来执行。
当我们在 Linux 系统中执行二进制文件时,有时会出现 cannot execute a binary file 的错误。 这个错误意味着 Linux 系统没有将其识别为 shell 脚本或可执行文件。
让我们看看如何在 Linux 中解决此错误的方法。
解决 Linux 中无法执行二进制文件错误
原因可能是二进制文件的体系结构类型不匹配。 另一个原因可能是用户没有执行二进制文件的权限。
那么在Linux系统中,我们就给大家提供几个解决办法来消除这个问题。 尝试使用以下解决方案之一,然后检查错误是否已解决。
检查文件的架构
遇到这个错误时,您需要做的第一件事就是确保您获得了正确的二进制文件。 因为如果你有一个 32 位的二进制文件在 64 位系统上执行它,它不会执行并且会给你错误。
32 位的二进制文件在 64 位系统上不起作用,反之亦然。 我们可以使用以下命令检查 Linux 中任何文件的体系结构。
命令的语法:
$ file filename
用于文件架构的命令:
$ file test.sh
如图所示,我们使用了终端命令文件test.sh。 我们可以在输出中看到名为 test.sh 的文件的体系结构。
这样,我们也可以找到一个二进制文件的架构。
如果您的二进制文件的架构与您运行它的系统不匹配,您需要将您的二进制文件运行到匹配的架构系统。
检查您的二进制文件格式
我们在 Windows、Linux 和 macOS 系统上运行二进制文件。 为 Windows 系统制作的二进制文件不会运行其他操作系统,反之亦然。
这些二进制文件有不同的格式,可以帮助用户区分它们。 如果您在 Linux 系统上运行为 Windows 或 macOS 制作的二进制文件,它将不起作用。
您必须在 Linux 操作系统上运行为 Linux 制作的二进制文件。
在 Linux 中安装 GCC 和 Gfortran 包
如果我们的 Linux 系统中没有安装 GCC 和 Gfortran 这两个包,那么这可能是我们的 Linux 系统无法执行二进制文件的原因。 必须安装这些包(GCC 和 Gfortran)才能使多个二进制文件正确编译和执行。
我们可以在终端中使用以下命令来安装这些库。
用于安装 Gfortran 包的命令:
$ sudo apt-get install gfortran
用于安装 GCC 软件包的命令:
$ sudo apt-get install build-essential
在 Linux 系统中安装这两个包后,就可以解决无法执行二进制文件的错误。
尝试解压缩二进制文件
有时,我们会压缩二进制文件,使它们更容易在 Internet 上共享。 如果您正在执行的二进制文件已经压缩,请尝试解压缩该文件。
我们可以在终端中使用以下命令解压缩二进制文件。
用于解压缩文件的命令:
$ xz -d ./filename
检查二进制文件权限
二进制文件无法在 Linux 系统上执行的另一个原因可能是用户没有更改或读取文件二进制文件的权限。 我们可以通过在终端中使用以下命令授予二进制文件执行权限来解决此问题。
用于授予文件执行权限的命令:
$ chmod +x filename
设置权限后,我们可以在终端中使用此命令运行二进制文件:
$ ./filename
使用 dos2unix 命令执行二进制文件
解决无法执行二进制文件的最佳解决方案是在 Linux 中使用 dos2unix 命令。 这个命令可以帮助我们在我们的 Linux 系统上运行为 DOS 制作的二进制文件。
用于将 DOS 二进制文件转换为 Unix 格式的命令:
$ dos2unix filename.bin
在终端中使用该命令后,DOS 格式的二进制文件将转换为 Unix 格式。 然后,我们的 Linux 系统就可以执行二进制文件了。
本文解释了解决 Linux 中无法执行二进制文件错误的所有可能解决方案。 我们希望您发现这篇 Linux 文章有助于理解如何在 Linux 中执行二进制文件。
相关文章
在 Bash 中运行 find -exec 命令
发布时间:2024/03/14 浏览次数:127 分类:操作系统
-
本文将演示如何使用 find 命令的 -exec 参数来使用 find 命令定位文件中的任何文本。