Я пытаюсь запустить двоичный файл на 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: не могу выполнить двоичный файл: ошибка формата Exec
Я знаю, что мой двоичный файл 32-битный, а мой Ubuntu 64-битный, поэтому я следовал этому руководству , чтобы добавить новую архитектуру. Это не помогло, такая же ошибка происходит.
Я также искал другие решения, но, похоже, единственная проблема, возникающая с этой ошибкой, - это несоответствующая архитектура. Я совершенно уверен, что это не моя проблема - эльф это ARM, так же как и Odroid. Раньше я запускал похожие двоичные файлы на этом Odroid, поэтому сейчас я в замешательстве.
Можете ли вы помочь мне найти мою ошибку?
ELF 32-bit LSB executable, ARM
Это - исполняемый файл ARM на 32 бита, разработанный для 32-разрядных сред инфраструктуры ARM (armhf, armel, arm64, когда у Вас есть ARM на 32 бита, освобождает)
aarch64
, Вашей архитектурой является 64-разрядный ARM. А именно, aarch64
микросхемы ТОЛЬКО поддерживают систему команд ARMv8 A64, и не делают поддержка системы команд времени выполнения A/T32 как этот двоичный файл потребности <глоток> 1 глоток>.
, Таким образом, жалоба системы на самом деле допустима - 32-разрядный исполняемый файл ARM имеет недопустимый заголовок ELF для 64-разрядного aarch64
среда, которая не может выполнить системы команд A/T32.
<глоток> 1 глоток> Гипотеза, основанная на https://en.wikichip.org/wiki/arm/aarch64, который указывает:
режим выполнения AArch64 был начат с ARMv8 ISA для машин, выполняющих инструкции A64. Машина в AArch64 может только выполнить инструкции A64 и не может выполнить A32 или инструкции T32.