繁体   English   中英

旧的ARM32二进制文件可以在AARCH64内核上运行吗?

[英]Can old ARM32 binary files be run on AARCH64 kernel?

我很好奇在AARCH64-Linux机器上运行旧的ARM32-Linux程序的可行性,我进行了一些实验:

  1. 写一个程序“Hello,World!” 并使用arm-none-linux-gnueabi-gcc和aarch64-linux-gnu-gcc静态编译它。
  2. 使用busybox和aarch64编译器静态构建并创建ramdisk。
  3. 把2“你好,世界!” 程序(在ARM32和AARCH64中)到ramdisk。
  4. 使用vexpress_defconfig和aarch64编译器构建一个简单的AARCH64-Linux内核。
  5. 使用qemu-system-aarch64运行内核和ramdisk。

(所有二进制文件包括ramdisk中的busybox都是静态编译的。)

结果:

  1. “你好,世界!” AARCH64中的程序已成功执行。
  2. “你好,世界!” ARM32中的程序无法运行但显示消息:

第1行:语法错误:意外的单词(期待“)”)

是否有解决上述问题的建议或专业知识?

谢谢moonbutt74。 您为我寻找解决该问题的方法提供了有用的线索。

要在AARCH64内核上启用运行ARM32-Linux程序的支持,应选择内核中的选项:

  1. 运行make menuconfig ARCH = arm64
  2. 转到该选项并选择它:

用户空间二进制格式--->内核支持32位EL0

  1. 通过运行make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-重新编译内核make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

  2. 使用ramdisk和qemu-system-aarch64运行重新编译的内核。

  3. “你好,世界!” (ARM32和AARCH64)中的程序可以成功执行!!

“make menuconfig ARCH = arm64”的屏幕截图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM