アセンブリ言語を含む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
で終了しました
file
の出力によると、このプログラムはGNU/Linux用です。私はこれを知っています:
b1
は ELF
(拡張可能およびリンク可能形式) 形式ですが、Mac OS XではバイナリにMach-O
形式が使用されます。file
は、このファイルがGNU/Linux 2.6.18
用であることを認識しています。つまり、最新のほとんどのLinuxディストリビューションで動作するでしょう。問題を解決するには、この問題をLinuxディストリビューション内で実行するか、プログラムを再コンパイルするか、またはこのプログラムのMac OS Xバージョンを入手する必要があります。
b1
はXYZOSやCPUで動かないのですか?人々が異なる言語を話すのと同じように、異なるコンピュータは異なる命令を理解します。たとえば、お使いのMacはIntelプロセッサを使用していますが、Android携帯はARMプロセッサを使用しています。これら2つのプロセッサを英語とフランス語と比較してください。彼らは同じ言語ファミリーに属しているかもしれませんが、それでも、あなたは同時に両方を話すことはできません。これは結論につながる:
異種のコンピュータは異なる言語で「会話」します。
異なるオペレーティングシステム(Windows、Mac OS X、Linuxなど)が同じバイナリを使用できないのは、次の点を考慮してください。
ソフトウェアが客観的にハードウェアと異なる点は何ですか?あまりない。
どちらも、コンピュータのより複雑なコンポーネントがエンドユーザーのタスクを完了できるようにするシステムと「言語」を提供します。どちらも仕事をやり遂げるために合意された言語を必要とします。叫び声の試合に10人の人々がいて、それぞれが違う言語を話していると想像してみてください。両方のオペレーティングシステムが同じプロセッサを使用していても、異なるOSソフトウェアが異なるバイナリを必要とするのはこのためです。
アセンブリ言語?あなたはそれをコンパイルするか、むしろ組み立てる必要があります。
man as