gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:13:29 26 4
gpt4 key购买 nike

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

  1. 编写程序“Hello, World!”并使用 arm-none-linux-gnueabi-gcc 和 aarch64-linux-gnu-gcc 对其进行静态编译。
  2. 使用 busybox 和 aarch64 编译器静态构建和创建 ramdisk。
  3. 将 2 “Hello, World!”程序(在 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-

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

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

The screenshot of "make menuconfig ARCH=arm64"

关于linux - 旧的 ARM32 二进制文件可以在 AARCH64 内核上运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34648832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com