我为 Linux 机器编译了一个 32 位可执行文件。它可以毫无问题地运行在大多数 Linux 发行版上。但是,在 Ubuntu 16.04 LTS 上,我No such file or directory
在尝试执行它时收到错误。可执行文件存在于目录中,并设置了所有相关权限。
有几个答案详细说明了此问题的解决方案(像这儿)。所以我做了:
dpkg --print-architecture
印刷amd64
。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
)。