Can old ARM32 binary files be run on AARCH64 kernel?

柔情痞子 提交于 2019-12-06 23:36:48

问题


I am curious about the feasibility of running old ARM32-Linux programs on AARCH64-Linux machines and I conducted some experiments:

  1. write a program "Hello, World!" and compile it statically with arm-none-linux-gnueabi-gcc and aarch64-linux-gnu-gcc.
  2. statically build and create a ramdisk using busybox and aarch64 compiler.
  3. put the 2 "Hello, World!" programs (in ARM32 and AARCH64) to the ramdisk.
  4. build a simple AARCH64-Linux kernel with vexpress_defconfig and aarch64 compiler.
  5. run the kernel and ramdisk using qemu-system-aarch64.

(All binary files including busybox in the ramdisk are statically compiled.)

Result:

  1. "Hello, World!" program in AARCH64 was successfully executed.
  2. "Hello, World!" program in ARM32 cannot be run but shows the messages:

line 1: syntax error: unexpected word (expecting ")")

Is there suggestion or expertise to solve the issue above?


回答1:


Thank you moonbutt74. You had provided an useful clue for me to seek the solution to that issue.

To enable the support of running ARM32-Linux programs on AARCH64 kernel, the option in the kernel should be selected:

  1. run make menuconfig ARCH=arm64
  2. go to the option and select it:

Userspace binary formats ---> Kernel support for 32-bit EL0

  1. recompile the kernel by running make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

  2. run the recompiled kernel with ramdisk and qemu-system-aarch64.

  3. the "Hello, World!" programs in (ARM32 and AARCH64) can be executed successfully !!



来源:https://stackoverflow.com/questions/34648832/can-old-arm32-binary-files-be-run-on-aarch64-kernel

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!