【发布时间】:2016-04-11 11:17:31
【问题描述】:
我很好奇在 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 行:语法错误:意外单词(预期为“)”)
有解决上述问题的建议或专业知识吗?
【问题讨论】:
-
一个有趣的问题。但我很确定这是 ABI 问题,而不是语言问题。
-
您使用的是非标准内核吗?主线 arm64 doesn't have a vexpress_defconfig,而您不会使用 arm64 defconfig 来解决这个问题(默认情况下启用必要的位)。