GNU/Linux >> Linux の 問題 >  >> Linux

バイナリ ファイルを実行できないというエラーを解決するにはどうすればよいですか?

通常、このエラー メッセージは、Linux がファイルをシェル スクリプトまたは実行可能ファイルとして認識していないことを意味します。

通常、原因は間違ったアーキテクチャで実行可能ファイルを実行していることです。ARM CPU で x86 実行可能ファイルを実行しようとすると、このメッセージが表示されます。

/usr/bin/id しました 上書きされますか?


sh executablefilename を使用する代わりに、./executablefilename を使用して実行してみてください。結局のところ、これはシェル スクリプトではありません。


問題は、異なるプロセッサ アーキテクチャのバイナリを実行することです。バイナリのアーキテクチャを確認するには、(binutils からの) objdump を使用できます。マシンのアーキテクチャを確認するには、una​​me を使用できます。

例えばクロム用のFirefoxプラグインであるFF.Communicatorをインストールするときに、「バイナリファイルを実行できません」というエラーが発生しました(これにより、Javaアプレットを使用するページを実行できます)。

  • objdump バイナリが 64 ビット elf64-x86-64 であることを示します
  • うなめ 私のマシンが 32 ビット i686 であることを示しています

    $ ./FF.Communicatorbash:./FF.Communicator:バイナリ ファイルを実行できません$ uname -mpioi686 i686 i386 GNU/Linux$ objdump -a ./FF.Communicator./FF.Communicator:ファイル形式 elf64-x86-64./ FF.コミュニケーター

  • objdump 私のマシンで動作しているバイナリでは、それが 32 ビット elf32-i386 であることを示しています

    $ objdump -a /bin/ls/bin/ls:ファイル形式 elf32-i386

これらのツールを使用すると、Intel アーキテクチャだけでなく、あらゆるプロセッサのマシンとバイナリのアーキテクチャをチェックできます。

Mac OSX ユーザーの場合、「file」コマンドを使用して特定のファイルのアーキテクチャ情報を確認できます:

$ file filename_here

Linux
  1. ファイルの存在を確認し、存在しない場合はコマンドを実行するにはどうすればよいですか?

  2. ファイルの最後の文字である改行を削除するにはどうすればよいですか?

  3. システムが ~/.screenrc ファイルを使用していることを確認するにはどうすればよいですか?

  1. / usr / bin / ls:/ usr / bin / ls:バイナリファイルを実行できませんか?

  2. ディレクトリツリーで最も古いファイルを見つけるにはどうすればよいですか

  3. .py ファイルからバイナリを取得するにはどうすればよいですか

  1. Linuxでファイルをシンボリックリンクするにはどうすればよいですか?

  2. Linuxを使用して、ファイルの内容をパラメーターとして実行可能ファイルに渡すにはどうすればよいですか?

  3. コマンドラインから PHP コードを実行するにはどうすればよいですか?