抱歉,此文件适用于 GNU/Linux

抱歉,此文件适用于 GNU/Linux

我有一个名为 b1 的文件,其中包含汇编语言。我尝试使用以下方法在 OSX 上执行该文件

$ ./b1

我收到以下错误:

-bash: ./b1: cannot execute binary file

我查看了其他类似的问题,但无济于事。我肯定使用的是 64 位架构。

以下是相关信息的输出:

$ file b1
b1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ uname -a
Darwin Anthonys-MacBook-Pro.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64

编辑:

Ranas b1最终终止于: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/as: fatal error in /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../libexec/as/x86_64/as

答案1

抱歉,此文件适用于 GNU/Linux

根据您的file输出,该程序适用于 GNU/Linux。我知道这一点是因为:

  1. 该文件b1位于ELF(可扩展、可链接格式)格式,而 Mac OS X 使用Mach-O二进制格式;
  2. file识别出此文件适用于GNU/Linux 2.6.18,这意味着它可以在大多数现代 Linux 发行版上运行。

为了解决您的问题,您必须在 Linux 发行版中运行该问题,重新编译该程序,或者获取该程序的 Mac OS X 版本。

那么...为什么不b1工作XYZ操作系统还是 CPU?

正如人们说不同的语言一样,不同的计算机理解不同的指令。例如,您的 Mac 使用 Intel 处理器,而您的 Android 手机使用 ARM 处理器。将这两种处理器与英语和法语进行比较。它们可能属于同一语系,但您仍然无法同时说这两种语言。这得出一个结论:

不同的计算机用不同的语言“交谈”。

至于为什么不同的操作系统(例如 Windows、Mac OS X 和 Linux)不能使用相同的二进制文件,请考虑这一点:

软件与硬件的客观区别是什么?区别并不大。

两者都提供了一个系统和一种“语言”,使计算机的更复杂组件能够为最终用户完成任务。两者都需要一种约定俗成的语言来完成工作。想象一下,如果有 10 个人在争吵,每个人都说着不同的语言。这就是为什么不同的操作系统软件需要不同的二进制文件,即使两种操作系统使用相同的处理器。

答案2

汇编语言?你需要编译它,或者更确切地说是汇编它。

man as

相关内容