抱歉,此檔案適用於 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

相關內容