![添加多架构(i386)跨设备和运行时支持](https://linux22.com/image/1200219/%E6%B7%BB%E5%8A%A0%E5%A4%9A%E6%9E%B6%E6%9E%84%EF%BC%88i386%EF%BC%89%E8%B7%A8%E8%AE%BE%E5%A4%87%E5%92%8C%E8%BF%90%E8%A1%8C%E6%97%B6%E6%94%AF%E6%8C%81.png)
在 22.04.03 系统上我添加了 i386 架构支持:
sudo dpkg --add-architecture i386
我可以看到 multiarch-support 已经安装:
sudo apt list --installed multi*
Listing... Done
multiarch-support/now 2.27-3ubuntu1.5 amd64 [installed,local]
当我尝试执行 32 位程序时收到此错误:
bash: ./awk: cannot execute binary file: Exec format error
file ./awk
./awk: ELF 32-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /libx32/ld-linux-x32.so.2, BuildID[sha1]=814da5a7561a71760e7ee54790fef0e6fbc6f4a7, for GNU/Linux 3.4.0, stripped
当我查看 /libx32 时发现它是空的。
我之前已经设置了交叉编译(在另一个 22.04 系统上,其中 32 位和 64 位二进制文件正在运行)并且我不记得我特别做了什么来使它运行。
任何指点都值得赞赏。
答案1
从内核 6.5 降级到 5.15 解决了我的问题。
我安装了 arch-test,它在正常工作的系统上显示 3 个条目 (amd64、i386 和 x32),但在损坏的系统上只显示 (amd64、i386)。arch-test 检查内核 (而不是发行版)。因此我回滚了内核并修复了这个问题。
我希望放弃 x32 biarch 支持不是故意的。我该如何提出这个问题?
顺便说一下,您还需要安装软件包 libc6-x32,但正确的内核却没有帮助。