web-dev-qa-db-ja.com

-bash:./my_file:バイナリファイルを実行できません:Exec形式のエラーですが、私のアーキテクチャとelfは一致しています

Odroid-C2でubuntu64-16.04.3-minimal-odroid-c2-20171005 OSを使用してバイナリファイルを実行しようとしています。このファイルには777の特権があり、ARM用にコンパイルされています。

# ls -l my_file
-rwxrwxrwx 1 root root 136409 Sep 30 13:17 my_file

#pwd
/home

#file my_file
my_file: ELF 32-bit LSB executable, ARM, version 1, statically linked, not stripped

#uname -a
Linux odroid64 3.14.79-116 #1 SMP PREEMPT Tue Sep 26 01:19:06 BRT 2017 aarch64 aarch64 aarch64 GNU/Linux 

実行しようとすると(./my_file)、エラーが表示されます:-bash:./my_file:cannot run binary file:Exec format error

私のバイナリファイルは32ビットで、Ubuntuは64ビットであることを知っているので、 このチュートリアル に従って新しいアーキテクチャを追加しました。これは役に立たなかった、同じエラーが発生しています。

別の解決策も探しましたが、このエラーで発生する唯一の問題は、一致しないアーキテクチャーであるようです。これは私の問題ではないと確信しています-エルフはARMであり、オドロイドも同様です。以前はこのOdroidで同様のバイナリファイルを実行していたので、今は本当に混乱しています。

私の間違いを見つけてくれませんか?

1
catalex

ELF 32-bit LSB executable, ARM

これは32ビットですARM 32ビット用に設計された実行可能ファイルARMインフラストラクチャ環境(armhf、armel、arm64、32ビットがある場合)ARM libs)

aarch64

アーキテクチャは64ビットARMです。具体的には、aarch64チップ[〜#〜]のみ[〜#〜]はARMv8 A64命令セットをサポートし、はサポートしませんこのバイナリが必要とするようなA/T32ランタイム命令セットをサポート 1

したがって、システムの不平は実際には有効です-32ビットARM実行可能ファイルには64ビットの無効なELFヘッダーがありますaarch64 A/T32命令セットを実行できない環境。


1 https://en.wikichip.org/wiki/arm/aarch64 に基づく仮定:

AArch64実行状態は、ARMv8で導入されましたISA A64命令を実行するマシン用。AArch64のマシンは、A64命令のみを実行でき、A32またはT32命令は実行できません。

2
Thomas Ward