无法在具有多架构支持的 64 位系统上运行 32 位可执行文件

无法在具有多架构支持的 64 位系统上运行 32 位可执行文件

我为 Linux 机器编译了一个 32 位可执行文件。它可以毫无问题地运行在大多数 Linux 发行版上。但是,在 Ubuntu 16.04 LTS 上,我No such file or directory在尝试执行它时收到错误。可执行文件存在于目录中,并设置了所有相关权限。

有几个答案详细说明了此问题的解决方案(像这儿)。所以我做了:

  1. dpkg --print-architecture印刷amd64
  2. dpkg --print-foreign-architectures印刷i386。即使默认启用多架构,我也无法使可执行文件正常工作。

为了让这个可执行文件正常工作,我还需要安装/执行什么操作?

PS:系统没有安装ia32-libs。

答案1

对于存在的文件,“没有这样的文件或目录”是一个症状缺少装载机。在您的情况下,如果在 64 位系统上使用 32 位二进制文​​件,则您会缺少动态 loader /lib/ld-linux.so.2

启用多架构意味着您可以在 64 位系统上安装 32 位软件包。但要实际运行 32 位可执行文件,您需要实际安装 32 位软件包。最起码要安装libc6:i386;这是包含动态加载程序的包。执行此操作后,您可能仍会收到有关缺少库的错误,因此请安装必需的 32 位库包 ( libFOO:i386)。

相关内容