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で同様のバイナリファイルを実行していたので、今は本当に混乱しています。
私の間違いを見つけてくれませんか?
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命令は実行できません。