解決方法:-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

編集:

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

回答:


25

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

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

  1. ファイルb1ELF(Extensible and Linkable Format)形式ですが、Mac OS XはMach-Oバイナリ用の形式を使用します。
  2. fileは、このファイルがの対象GNU/Linux 2.6.18であることを認識しています。つまり、ほとんどの最新のLinuxディストリビューションで動作します。

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

だから... ...しないのはなぜb1での作業XYZ OSやCPU?

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

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

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

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

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


こんにちは、Mac OS 10.9でelfファイルをコンパイルしようとしても同様の問題があります。このonmacを実行する方法を教えてください
AllIsWell

AllsWellあなたはこの方法を見つけました!?
新皮質

1

アセンブリ言語?コンパイルするか、むしろアセンブルする必要があります。

man as

2
質問者はアセンブリ言語マシンコードを混同しているようですfile質問の出力を参照してください。
JdeBP 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.