use*_*868 22 bash binary-files macos
我有一个名为 b1 的文件,其中包含汇编语言。我正在尝试使用在 OSX 上执行文件
$ ./b1
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
-bash: ./b1: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
我看过其他类似的问题,但无济于事。我肯定在使用 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
Run Code Online (Sandbox Code Playgroud)
编辑:
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
Win*_*nny 29
根据您的file
输出,该程序适用于 GNU/Linux。我知道这是因为:
b1
采用ELF
(可扩展和可链接格式)格式,而 Mac OS X 使用Mach-O
二进制格式;file
识别此文件用于GNU/Linux 2.6.18
,这意味着它可以在大多数现代 Linux 发行版上运行。要解决您的问题,您必须在 Linux 发行版中运行此问题,重新编译程序,或获取此程序的 Mac OS X 版本。
b1
在XYZ操作系统或 CPU 上工作?正如人们说不同的语言一样,不同的计算机理解不同的指令。例如,您的 Mac 使用 Intel 处理器,而您的 Android 手机使用 ARM 处理器。将这两种处理器与英语和法语进行比较。他们可能属于同一个语系,但仍然不能同时说这两种语言。由此得出一个结论:
不同的计算机用不同的语言“交谈”。
至于为什么不同的操作系统(如 Windows、Mac OS X 和 Linux)不能使用相同的二进制文件,请考虑:
是什么让软件在客观上不同于硬件?不多。
两者都提供了一种系统和一种“语言”,允许计算机的更复杂组件为最终用户完成任务。两者都需要一种商定的语言来完成工作。想象一下,如果有 10 个人在进行一场大喊大叫,每个人都说一种不同的语言。这就是为什么不同的操作系统软件需要不同的二进制文件,即使两个操作系统使用相同的处理器。
归档时间: |
|
查看次数: |
142947 次 |
最近记录: |