如何解决:-bash::无法执行二进制文件


18

我有一个名为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

编辑:

Ran as 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

Answers:


25

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

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

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

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

那么...为什么b1XYZ OS或CPU 上不起作用?

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

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

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

是什么使软件在客观上不同于硬件?不多。

两者都提供了系统和“语言”,允许计算机的更复杂的组件为最终用户完成任务。两者都需要达成共识的语言才能完成工作。想象一下,如果有10个人参加一场高喊的比赛,每个人都说不同的语言。这就是为什么即使两个操作系统使用相同的处理器,不同的OS软件也需要不同的二进制文件的原因。


嗨,我在Mac OS 10.9中尝试编译elf文件时遇到类似的问题。您能告诉我如何运行此onmac吗?
AllIsWell 2014年

AllsWell您找到了解决方法!
Neocortex 2015年

1

汇编语言?您需要对其进行编译,或者将其组装。

man as

2
发问者似乎把汇编语言机器代码混为一谈。请参阅问题中的输出file
JdeBP 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.