gpt4 book ai didi

arm - 在 aarch64 上运行 32 位 elf

转载 作者:行者123 更新时间:2023-12-01 21:47:55 26 4
gpt4 key购买 nike

我已经在 qemu 64 位 ARM 上安装了 Debian ( followed this tutorial )

uname -a

Linux test 4.9.0-7-arm64 #1 SMP Debian 4.9.110-1 (2018-07-05) aarch64 GNU/Linux

我正在尝试在其上运行 32 位 elf 文件,但有些可以工作,有些则不能:

bash: ./file_2: cannot execute binary file: Exec format error

在运行的文件上运行文件命令,我得到:

file_1: ELF 32-bit LSB executable, ARM, EABI4 version 1 (SYSV), statically linked, not stripped

以及不运行的:

file_2: ELF 32-bit LSB executable, ARM, version 1 (ARM), statically linked, stripped

并且都可以在32位系统(armv7l)上运行

唯一的区别是 SYSV/ARM 版本。

是否有无需重新编译内核的解决方法?( read this post )

最佳答案

正如链接的帖子所建议的,这需要在内核中启用 CONFIG_COMPAT。另一方面,如果您的内核没有它,我会感到惊讶——我在该教程中获得的 Debian 4.9.0-4 内核确实设置了 CONFIG_COMPAT。您可以通过查看位于 guest 虚拟机的/boot/中的配置文件来检查您的内核是否启用了它。如果它丢失了,那么你需要一个新的内核,其他的都无济于事。

但是,在您的情况下,您确实有 CONFIG_COMPAT,并且某些可执行文件可以工作。能工作的和不能工作的区别在于,能工作的就是EABI,不能工作的就是OABI。 OABI 是用于 32 位 Arm Linux 二进制文件的旧的且过时的 ABI(“O”代表“旧”,大约十年来它一直是一个糟糕的选择......)并且 64 位不支持它内核的 CONFIG_COMPAT。如果您想在 64 位内核下运行这些二进制文件,则需要将它们从源代码重建为 EABI 二进制文件。

关于arm - 在 aarch64 上运行 32 位 elf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51660401/

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