web-dev-qa-db-ja.com

解決方法:-bash::バイナリファイルを実行できません

アセンブリ言語を含む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

編集する

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で終了しました

17
user304868

申し訳ありません、このファイルはGNU/Linux用です

fileの出力によると、このプログラムはGNU/Linux用です。私はこれを知っています:

  1. ファイルb1ELF(拡張可能およびリンク可能形式) 形式ですが、Mac OS XではバイナリにMach-O形式が使用されます。
  2. fileは、このファイルがGNU/Linux 2.6.18用であることを認識しています。つまり、最新のほとんどのLinuxディストリビューションで動作するでしょう。

問題を解決するには、この問題をLinuxディストリビューション内で実行するか、プログラムを再コンパイルするか、またはこのプログラムのMac OS Xバージョンを入手する必要があります。

だから...なぜb1XYZOSやCPUで動かないのですか?

人々が異なる言語を話すのと同じように、異なるコンピュータは異なる命令を理解します。たとえば、お使いのMacはIntelプロセッサを使用していますが、Android携帯はARMプロセッサを使用しています。これら2つのプロセッサを英語とフランス語と比較してください。彼らは同じ言語ファミリーに属しているかもしれませんが、それでも、あなたは同時に両方を話すことはできません。これは結論につながる:

異種のコンピュータは異なる言語で「会話」します。

異なるオペレーティングシステム(Windows、Mac OS X、Linuxなど)が同じバイナリを使用できないのは、次の点を考慮してください。

ソフトウェアが客観的にハードウェアと異なる点は何ですか?あまりない。

どちらも、コンピュータのより複雑なコンポーネントがエンドユーザーのタスクを完了できるようにするシステムと「言語」を提供します。どちらも仕事をやり遂げるために合意された言語を必要とします。叫び声の試合に10人の人々がいて、それぞれが違う言語を話していると想像してみてください。両方のオペレーティングシステムが同じプロセッサを使用していても、異なるOSソフトウェアが異なるバイナリを必要とするのはこのためです。

21
Winny

アセンブリ言語?あなたはそれをコンパイルするか、むしろ組み立てる必要があります。

man as
1
Emery Lapinski