Ubuntu 22.10 无法执行 x32-ABI 二进制文件

Ubuntu 22.10 无法执行 x32-ABI 二进制文件

Ubuntu 22.10(amd64)无法在我新安装的计算机上执行任何 x32 二进制文件(x32:x32-ABI,请参阅https://en.wikipedia.org/wiki/X32_ABI).示例程序helloworld.c:

#include <stdio.h>                                                                                                                                                                                                                                                                          
int main(argv) { printf("Hello World.\n"); }

生成的二进制文件失败如下(如果该二进制文件是在旧版 Ubuntu 上生成的,也是如此):

# gcc-12 -mx32 -o helloworld helloworld.c
# ./helloworld
-bash: ./helloworld: cannot execute binary file: Exec format error

如果我在 22.04 或任何较旧的 Ubuntu 版本上尝试生成的二进制文件,它会按预期工作。我的外部架构看起来不错:

# dpkg --print-foreign-architectures
i386

从 22.04 到 22.10 有相关变化吗?

答案1

我尝试了不同的内核版本并检查了它们的/boot/config-...文件。Ubuntu 已在 Ubuntu 22.10 的 5.19 内核中删除了内核选项CONFIG_X86_X32(主线内核 ppa 显示版本 5.17、5.18、6.0 也是如此)。因此,从 5.17 开始无法运行 x32 二进制文件,而 Ubuntu 22.10 有一个 5.19 内核。这很遗憾。

我在启动板上针对内核包提交了一个错误:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1994516

不幸的是,这个错误被标记为“无法修复”。因此,我们将把计算集群切换到另一个 Linux 发行版。

相关内容