相关疑难解决方法(0)

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

我很好奇在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行:语法错误:意外的单词(期待")")

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

linux gcc arm arm64

9
推荐指数
1
解决办法
4164
查看次数

在 aarch64 上运行 32 位 elf

我已经在 qemu 64 位 ARM 上安装了 Debian(遵循本教程

uname -a
Run Code Online (Sandbox Code Playgroud)

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

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

bash: ./file_2: 无法执行二进制文件: Exec 格式错误

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

file_1:ELF 32 位 LSB 可执行文件,ARM,EABI4 版本 1 (SYSV),静态链接,未剥离

以及不运行的:

file_2:ELF 32 位 LSB 可执行文件,ARM,版本 1 (ARM),静态链接,已剥离

并且都可以在32位系统上工作(armv7l)

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

有没有无需重新编译内核的解决方法?(阅读这篇文章

arm qemu elf arm64

5
推荐指数
1
解决办法
3696
查看次数

标签 统计

arm ×2

arm64 ×2

elf ×1

gcc ×1

linux ×1

qemu ×1