当前位置:  开发笔记 > 运维 > 正文

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

如何解决《旧的ARM32二进制文件可以在AARCH64内核上运行吗?》经验,为你挑选了1个好方法。

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

    写一个程序"Hello,World!" 并使用arm-none-linux-gnueabi-gcc和aarch64-linux-gnu-gcc静态编译它.

    使用busybox和aarch64编译器静态构建并创建ramdisk.

    把2"你好,世界!" 程序(在ARM32和AARCH64中)到ramdisk.

    使用vexpress_defconfig和aarch64编译器构建一个简单的AARCH64-Linux内核.

    使用qemu-system-aarch64运行内核和ramdisk.

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

结果:

    "你好,世界!" AARCH64中的程序已成功执行.

    "你好,世界!" ARM32中的程序无法运行但显示消息:

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

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



1> David Hsu..:

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

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

    运行make menuconfig ARCH = arm64

    转到该选项并选择它:

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

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

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

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有